Skip to content
  • ChenLiang's avatar
    27af7d6e
    xbzrle: optimize XBZRLE to decrease the cache misses · 27af7d6e
    ChenLiang authored
    
    
    Avoid hot pages being replaced by others to remarkably decrease cache
    misses
    
    Sample results with the test program which quote from xbzrle.txt ran in
    vm:(migrate bandwidth:1GE and xbzrle cache size 8MB)
    
    the test program:
    
    include <stdlib.h>
    include <stdio.h>
    int main()
     {
            char *buf = (char *) calloc(4096, 4096);
            while (1) {
                int i;
                for (i = 0; i < 4096 * 4; i++) {
                    buf[i * 4096 / 4]++;
                }
                printf(".");
            }
     }
    
    before this patch:
    virsh qemu-monitor-command test_vm '{"execute": "query-migrate"}'
    {"return":{"expected-downtime":1020,"xbzrle-cache":{"bytes":1108284,
    "cache-size":8388608,"cache-miss-rate":0.987013,"pages":18297,"overflow":8,
    "cache-miss":1228737},"status":"active","setup-time":10,"total-time":52398,
    "ram":{"total":12466991104,"remaining":1695744,"mbps":935.559472,
    "transferred":5780760580,"dirty-sync-counter":271,"duplicate":2878530,
    "dirty-pages-rate":29130,"skipped":0,"normal-bytes":5748592640,
    "normal":1403465}},"id":"libvirt-706"}
    
    18k pages sent compressed in 52 seconds.
    cache-miss-rate is 98.7%, totally miss.
    
    after optimizing:
    virsh qemu-monitor-command test_vm '{"execute": "query-migrate"}'
    {"return":{"expected-downtime":2054,"xbzrle-cache":{"bytes":5066763,
    "cache-size":8388608,"cache-miss-rate":0.485924,"pages":194823,"overflow":0,
    "cache-miss":210653},"status":"active","setup-time":11,"total-time":18729,
    "ram":{"total":12466991104,"remaining":3895296,"mbps":937.663549,
    "transferred":1615042219,"dirty-sync-counter":98,"duplicate":2869840,
    "dirty-pages-rate":58781,"skipped":0,"normal-bytes":1588404224,
    "normal":387794}},"id":"libvirt-266"}
    
    194k pages sent compressed in 18 seconds.
    The value of cache-miss-rate decrease to 48.59%.
    
    Signed-off-by: default avatarChenLiang <chenliang88@huawei.com>
    Signed-off-by: default avatarGonglei <arei.gonglei@huawei.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
    27af7d6e
    xbzrle: optimize XBZRLE to decrease the cache misses
    ChenLiang authored
    
    
    Avoid hot pages being replaced by others to remarkably decrease cache
    misses
    
    Sample results with the test program which quote from xbzrle.txt ran in
    vm:(migrate bandwidth:1GE and xbzrle cache size 8MB)
    
    the test program:
    
    include <stdlib.h>
    include <stdio.h>
    int main()
     {
            char *buf = (char *) calloc(4096, 4096);
            while (1) {
                int i;
                for (i = 0; i < 4096 * 4; i++) {
                    buf[i * 4096 / 4]++;
                }
                printf(".");
            }
     }
    
    before this patch:
    virsh qemu-monitor-command test_vm '{"execute": "query-migrate"}'
    {"return":{"expected-downtime":1020,"xbzrle-cache":{"bytes":1108284,
    "cache-size":8388608,"cache-miss-rate":0.987013,"pages":18297,"overflow":8,
    "cache-miss":1228737},"status":"active","setup-time":10,"total-time":52398,
    "ram":{"total":12466991104,"remaining":1695744,"mbps":935.559472,
    "transferred":5780760580,"dirty-sync-counter":271,"duplicate":2878530,
    "dirty-pages-rate":29130,"skipped":0,"normal-bytes":5748592640,
    "normal":1403465}},"id":"libvirt-706"}
    
    18k pages sent compressed in 52 seconds.
    cache-miss-rate is 98.7%, totally miss.
    
    after optimizing:
    virsh qemu-monitor-command test_vm '{"execute": "query-migrate"}'
    {"return":{"expected-downtime":2054,"xbzrle-cache":{"bytes":5066763,
    "cache-size":8388608,"cache-miss-rate":0.485924,"pages":194823,"overflow":0,
    "cache-miss":210653},"status":"active","setup-time":11,"total-time":18729,
    "ram":{"total":12466991104,"remaining":3895296,"mbps":937.663549,
    "transferred":1615042219,"dirty-sync-counter":98,"duplicate":2869840,
    "dirty-pages-rate":58781,"skipped":0,"normal-bytes":1588404224,
    "normal":387794}},"id":"libvirt-266"}
    
    194k pages sent compressed in 18 seconds.
    The value of cache-miss-rate decrease to 48.59%.
    
    Signed-off-by: default avatarChenLiang <chenliang88@huawei.com>
    Signed-off-by: default avatarGonglei <arei.gonglei@huawei.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
Loading