Sasha Levin
743eeb0b01
KVM: Intelligent device lookup on I/O bus
...
Currently the method of dealing with an IO operation on a bus (PIO/MMIO)
is to call the read or write callback for each device registered
on the bus until we find a device which handles it.
Since the number of devices on a bus can be significant due to ioeventfds
and coalesced MMIO zones, this leads to a lot of overhead on each IO
operation.
Instead of registering devices, we now register ranges which points to
a device. Lookup is done using an efficient bsearch instead of a linear
search.
Performance test was conducted by comparing exit count per second with
200 ioeventfds created on one byte and the guest is trying to access a
different byte continuously (triggering usermode exits).
Before the patch the guest has achieved 259k exits per second, after the
patch the guest does 274k exits per second.
Cc: Avi Kivity <avi@redhat.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Signed-off-by: Sasha Levin <levinsasha928@gmail.com >
Signed-off-by: Avi Kivity <avi@redhat.com >
2011-09-25 19:17:59 +03:00
..
2011-07-27 20:43:21 +05:30
2011-07-26 13:38:50 -07:00
2011-07-27 17:52:58 -03:00
2011-09-06 16:37:58 +02:00
2011-07-26 16:49:47 -07:00
2011-08-13 14:50:32 -04:00
2011-07-30 08:57:57 -10:00
2011-07-28 11:31:47 +10:00
2011-09-08 14:43:03 -07:00
2011-07-27 13:23:02 -07:00
2011-08-03 21:53:27 -10:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-09-14 18:09:38 -07:00
2011-07-26 16:49:47 -07:00
2011-08-03 11:30:42 -04:00
2011-08-23 14:50:29 +02:00
2011-08-24 16:04:34 +02:00
2011-08-11 10:36:05 +02:00
2011-07-31 22:05:09 +02:00
2011-07-26 16:49:47 -07:00
2011-08-26 15:09:58 -07:00
2011-07-26 16:49:47 -07:00
2011-08-25 16:25:33 -07:00
2011-08-03 19:06:37 -04:00
2011-07-26 16:49:44 -07:00
2011-08-08 11:33:23 -07:00
2011-07-26 16:49:47 -07:00
2011-08-06 22:12:37 -07:00
2011-07-25 20:57:16 -07:00
2011-08-06 22:52:40 -07:00
2011-07-26 16:49:47 -07:00
2011-08-02 12:32:04 +01:00
2011-07-26 16:49:47 -07:00
2011-08-02 12:32:06 +01:00
2011-08-02 12:32:04 +01:00
2011-07-26 16:49:45 -07:00
2011-07-26 16:49:47 -07:00
2011-07-25 20:57:16 -07:00
2011-08-01 13:40:51 -10:00
2011-07-26 11:34:40 -07:00
2011-08-03 14:25:20 -10:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-09-21 13:20:21 -07:00
2011-07-26 16:49:47 -07:00
2011-08-08 16:08:08 +02:00
2011-08-03 11:15:57 -04:00
2011-08-03 14:25:21 -10:00
2011-08-17 13:00:20 -07:00
2011-08-03 14:25:20 -10:00
2011-07-27 22:39:30 -07:00
2011-08-05 14:45:41 -04:00
2011-07-26 16:49:47 -07:00
2011-07-31 14:30:59 -10:00
2011-07-26 16:49:44 -07:00
2011-08-17 10:23:50 -07:00
2011-07-28 11:23:21 +02:00
2011-07-28 01:32:04 -06:00
2011-07-26 16:49:47 -07:00
2011-07-29 21:53:30 +02:00
2011-07-26 16:49:47 -07:00
2011-07-27 13:21:40 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-09-25 19:17:59 +03:00
2011-09-25 19:17:57 +03:00
2011-07-25 20:57:15 -07:00
2011-08-03 11:15:56 -04:00
2011-07-31 22:08:04 +02:00
2011-09-14 18:09:38 -07:00
2011-07-31 22:08:04 +02:00
2011-08-17 13:00:20 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-28 05:58:19 -07:00
2011-08-07 22:48:07 -07:00
2011-07-31 12:18:15 -04:00
2011-07-31 14:27:04 -10:00
2011-08-01 13:48:31 -10:00
2011-08-06 22:56:03 -07:00
2011-07-31 12:18:16 -04:00
2011-07-26 16:49:43 -07:00
2011-07-25 20:57:15 -07:00
2011-08-04 11:26:24 +01:00
2011-07-28 16:19:22 -06:00
2011-07-28 01:32:04 -06:00
2011-07-27 09:30:56 +08:00
2011-08-09 11:27:16 -06:00
2011-07-26 16:49:47 -07:00
2011-07-30 08:21:48 -10:00
2011-08-04 16:43:43 -10:00
2011-08-01 11:50:15 -07:00
2011-08-29 12:28:33 +02:00
2011-08-25 10:17:28 -07:00
2011-07-27 09:31:02 +08:00
2011-08-14 13:34:31 +02:00
2011-08-03 00:58:42 -04:00
2011-07-27 12:50:45 -07:00
2011-08-25 16:25:34 -07:00
2011-07-26 16:49:47 -07:00
2011-08-03 14:25:24 -10:00
2011-07-26 16:49:46 -07:00
2011-08-06 18:33:19 -07:00
2011-07-25 20:57:14 -07:00
2011-07-25 20:57:17 -07:00
2011-08-25 16:25:34 -07:00
2011-07-26 14:50:01 -07:00
2011-07-26 16:49:47 -07:00
2011-08-11 11:24:42 -07:00
2011-07-26 16:49:47 -07:00
2011-07-30 08:44:19 -10:00
2011-08-03 14:25:24 -10:00
2011-09-15 14:49:44 -04:00
2011-07-30 08:21:48 -10:00
2011-09-15 14:49:43 -04:00
2011-08-07 22:48:07 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-07-25 20:57:15 -07:00
2011-09-14 18:09:38 -07:00
2011-08-03 14:25:22 -10:00
2011-08-26 15:09:58 -07:00
2011-07-26 16:49:47 -07:00
2011-08-02 14:51:57 -04:00
2011-08-22 14:13:32 -07:00
2011-08-23 10:10:38 -07:00
2011-08-23 10:10:38 -07:00
2011-07-27 17:55:40 -03:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:45 -07:00
2011-07-25 20:57:15 -07:00
2011-07-28 08:01:18 +00:00
2011-07-26 16:49:47 -07:00
2011-08-19 22:42:07 +08:00