|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-devel
[Xen-devel] [PATCH 9 of 9] Do bitmap scan word-by-word before	bit-by-bit 
| # HG changeset patch
# User Brendan Cully <brendan@xxxxxxxxx>
# Date 1240355511 25200
# Node ID 4a9831ea4a7d7bb95cd9584abe94e2fdc50f46f6
# Parent  0f1925415df0a4323d431085a9ee8956b8a95764
Do bitmap scan word-by-word before bit-by-bit.
For sparse bitmaps and large domains this saves a lot of time.
Signed-off-by: Brendan Cully <brendan@xxxxxxxxx>
diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c
--- a/tools/libxc/xc_domain_save.c
+++ b/tools/libxc/xc_domain_save.c
@@ -99,6 +99,8 @@
 
 #define BITMAP_SHIFT(_nr) ((_nr) % BITS_PER_LONG)
 
+#define ORDER_LONG (sizeof(unsigned long) == 4 ? 5 : 6)
+
 static inline int test_bit (int nr, volatile void * addr)
 {
     return (BITMAP_ENTRY(nr, addr) >> BITMAP_SHIFT(nr)) & 1;
@@ -1158,6 +1160,14 @@
 
                 if ( completed )
                 {
+                    /* for sparse bitmaps, word-by-word may save time */
+                    if ( !to_send[N >> ORDER_LONG] )
+                    {
+                        /* incremented again in for loop! */
+                        N += BITS_PER_LONG - 1;
+                        continue;
+                    }
+
                     if ( !test_bit(n, to_send) )
                         continue;
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 | 
 
| <Prev in Thread] | Current Thread | [Next in Thread> |  | 
[Xen-devel] [PATCH 0 of 9] Xen support for Remus, Brendan Cully
[Xen-devel] [PATCH 1 of 9] Add callbacks for suspend,	postcopy and preresume in xc_domain_save, Brendan Cully
[Xen-devel] [PATCH 5 of 9] Check tapdisk paths from the last colon	instead of the first, Brendan Cully
[Xen-devel] [PATCH 4 of 9] Support more than 2 FDs per tapdisk, Brendan Cully
[Xen-devel] [PATCH 3 of 9] Initiate failover if a packet is not	received every 500ms, Brendan Cully
[Xen-devel] [PATCH 8 of 9] Do not bother with to_skip/to_fix	bitmaps after the first final round, Brendan Cully
[Xen-devel] [PATCH 9 of 9] Do bitmap scan word-by-word before	bit-by-bit,
Brendan Cully <=
[Xen-devel] [PATCH 7 of 9] Buffer checkpoint data locally until	domain has resumed execution, Brendan Cully
[Xen-devel] [PATCH 2 of 9] Make xc_domain_restore loop until the fd	is closed, Brendan Cully
[Xen-devel] [PATCH 6 of 9] Remus tapdisk proxy, Brendan Cully
 |  |  | 
  
    |  |  |