summary refs log tree commit diff stats
path: root/results/classifier/gemma3:12b/performance/1777786
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/gemma3:12b/performance/1777786')
-rw-r--r--results/classifier/gemma3:12b/performance/177778647
1 files changed, 47 insertions, 0 deletions
diff --git a/results/classifier/gemma3:12b/performance/1777786 b/results/classifier/gemma3:12b/performance/1777786
new file mode 100644
index 00000000..873bfd57
--- /dev/null
+++ b/results/classifier/gemma3:12b/performance/1777786
@@ -0,0 +1,47 @@
+
+virtio-gpu-3d.c: change virtio_gpu_fence_poll timer scale
+
+We use virtio-gpu to accelerate Unigine Heaven Benchmark in VM. But we get only 5 FPS when we use AMD RX460 in our host.
+We found that guest os spent a lot of time in waiting for the return of glMapBufferRange/glUnmapBuffer commad. We suspected the host GPU was waiting for fence. So we finally change the timer of fence_poll. Afer change timer from
+ ms to us, Benchmark result raise up to 22 FPS.
+
+From a4003af5c4fe92d55353f42767d0c45de95bb78f Mon Sep 17 00:00:00 2001
+From: chen wei <email address hidden>
+Date: Fri, 8 Jun 2018 17:34:45 +0800
+Subject: [PATCH] virtio-gpu:improve 3d performance greatly
+
+  opengl function need fence support.when CPU execute opengl function, it need wait fence for synchronize GPU.
+so qemu must deal with fence timely as possible. but now the expire time of the timer to deal with fence is 10 ms.
+I think it is too long for opengl. So i will change it to 20 ns.
+  Before change, when i play Unigine_Heaven 3d game with virglrenderer, the fps is 3.  atfer change the fps up to 23.
+
+Signed-off-by: chen wei   <email address hidden>
+Signed-off-by: wang qiang <email address hidden>
+---
+ hw/display/virtio-gpu-3d.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c
+index 3558f38..c0a5d21 100644
+--- a/hw/display/virtio-gpu-3d.c
++++ b/hw/display/virtio-gpu-3d.c
+@@ -582,7 +582,7 @@ static void virtio_gpu_fence_poll(void *opaque)
+     virgl_renderer_poll();
+     virtio_gpu_process_cmdq(g);
+     if (!QTAILQ_EMPTY(&g->cmdq) || !QTAILQ_EMPTY(&g->fenceq)) {
+-        timer_mod(g->fence_poll, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + 10);
++        timer_mod(g->fence_poll, qemu_clock_get_us(QEMU_CLOCK_VIRTUAL) + 20);
+     }
+ }
+ 
+@@ -629,7 +629,7 @@ int virtio_gpu_virgl_init(VirtIOGPU *g)
+         return ret;
+     }
+ 
+-    g->fence_poll = timer_new_ms(QEMU_CLOCK_VIRTUAL,
++    g->fence_poll = timer_new_us(QEMU_CLOCK_VIRTUAL,
+                                  virtio_gpu_fence_poll, g);
+ 
+     if (virtio_gpu_stats_enabled(g->conf)) {
+-- 
+2.7.4
\ No newline at end of file