qemu-monitor screendump very slow
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
qemu-monitor screendump often using 10-20% cpu usage of one core to take a small capture.
Most of the CPU usage seems to come from libpixman. There were many reports of libpixman becoming 8 times slower in newer releases.
https:/
Simple Valgrind Ir report.
-------
Ir
-------
9,994,313,959 PROGRAM TOTALS
-------
Ir file:function
-------
4,883,603,360 /usr/src/
282,312,800 /usr/src/
267,394,160 /usr/src/
256,761,600 /usr/src/
254,676,199 ???:0x000000000
199,990,526 ???:0x000000000
Calls to there start from.
qemu_pixman_
pixman_
????
pixman_
general_
I tried taking a look on how to fix this, but it seems pixman is deeply enrooted inside the monitor. I wanted to try to simply take whats on the display and memcpy it into .ppm format manually creating the file header, but the image is all broken with colors being off or its smeared.
For example this is DisplaySurface:
struct DisplaySurface {
pixman_
pixman_image_t *image;
uint8_t flags;
#ifdef CONFIG_OPENGL
GLenum glformat;
GLenum gltype;
GLuint texture;
#endif
};
It appears graphic_
Using sdl graphics (the default) the drawing starts in https:/
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Most of the CPU is coming from ppm_save(filename, surface, errp);
graphic_ hw_update( con) takes an insignificant amount.