- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi!
I develop an embedded application based on the following prototype HW and SW components:
* Intel Atom CPU
* VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
* Linux (Ubuntu with xorg-edgers https://launchpad.net/~xorg-edgers/+archive/ppa)
The plan is to use OpenGL for 2D acceleration and maybe some effects. I have written a simple benchmarking application to measure the hardware's texturing performance. You can find the benchmarking application here (build instructions are in head comment): http://pastebin.com/f5f9c076f
I have monitored the performance of the benchmarking application on both the prototype and my developer hardware. (Developer HW and SW are: Intel CPU, video card with dedicated video memory and NVIDIA GPU and Linux.)
What I have found is that the prototype hardware has acceptable texturing performance (for my purpose) but it has very high CPU usage while only the GPU should work. The GPU works on 100% (monitored by intel_gpu_top) as expected and one CPU core (or one Hyperthread?) is about 70%. On my developer box the same benchmark runs GPU 100% and CPU near 0% as expected.
To tell the truth the CPU 0% on the develpment box could only be achieved by working around a bug in the NVIDIA driver. See this post: http://www.nvnews.net/vbulletin/showthread.php?t=131319
My question is what could cause the CPU usage? How could I monitor it? Is there a way to draw textures with GPU without CPU usage?
I have three ideas:
* The memory bus is allocated by the GPU. CPU tries to access the memory and has to wait for GPU to finish texture transfer. These waits are counted as CPU usage while nothing can be done.
* Some tasks of texturing is not implemented on GPU and that work must be done by the CPU
* This is a synhcronization issue between CPU and GPU. Something like in the NVIDIA driver's case.
I develop an embedded application based on the following prototype HW and SW components:
* Intel Atom CPU
* VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
* Linux (Ubuntu with xorg-edgers https://launchpad.net/~xorg-edgers/+archive/ppa)
The plan is to use OpenGL for 2D acceleration and maybe some effects. I have written a simple benchmarking application to measure the hardware's texturing performance. You can find the benchmarking application here (build instructions are in head comment): http://pastebin.com/f5f9c076f
I have monitored the performance of the benchmarking application on both the prototype and my developer hardware. (Developer HW and SW are: Intel CPU, video card with dedicated video memory and NVIDIA GPU and Linux.)
What I have found is that the prototype hardware has acceptable texturing performance (for my purpose) but it has very high CPU usage while only the GPU should work. The GPU works on 100% (monitored by intel_gpu_top) as expected and one CPU core (or one Hyperthread?) is about 70%. On my developer box the same benchmark runs GPU 100% and CPU near 0% as expected.
To tell the truth the CPU 0% on the develpment box could only be achieved by working around a bug in the NVIDIA driver. See this post: http://www.nvnews.net/vbulletin/showthread.php?t=131319
My question is what could cause the CPU usage? How could I monitor it? Is there a way to draw textures with GPU without CPU usage?
I have three ideas:
* The memory bus is allocated by the GPU. CPU tries to access the memory and has to wait for GPU to finish texture transfer. These waits are counted as CPU usage while nothing can be done.
* Some tasks of texturing is not implemented on GPU and that work must be done by the CPU
* This is a synhcronization issue between CPU and GPU. Something like in the NVIDIA driver's case.
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - asch
Hi!
I develop an embedded application based on the following prototype HW and SW components:
* Intel Atom CPU
* VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
* Linux (Ubuntu with xorg-edgers https://launchpad.net/~xorg-edgers/+archive/ppa)
The plan is to use OpenGL for 2D acceleration and maybe some effects. I have written a simple benchmarking application to measure the hardware's texturing performance. You can find the benchmarking application here (build instructions are in head comment): http://pastebin.com/f5f9c076f
I have monitored the performance of the benchmarking application on both the prototype and my developer hardware. (Developer HW and SW are: Intel CPU, video card with dedicated video memory and NVIDIA GPU and Linux.)
What I have found is that the prototype hardware has acceptable texturing performance (for my purpose) but it has very high CPU usage while only the GPU should work. The GPU works on 100% (monitored by intel_gpu_top) as expected and one CPU core (or one Hyperthread?) is about 70%. On my developer box the same benchmark runs GPU 100% and CPU near 0% as expected.
To tell the truth the CPU 0% on the develpment box could only be achieved by working around a bug in the NVIDIA driver. See this post: http://www.nvnews.net/vbulletin/showthread.php?t=131319
My question is what could cause the CPU usage? How could I monitor it? Is there a way to draw textures with GPU without CPU usage?
I have three ideas:
* The memory bus is allocated by the GPU. CPU tries to access the memory and has to wait for GPU to finish texture transfer. These waits are counted as CPU usage while nothing can be done.
* Some tasks of texturing is not implemented on GPU and that work must be done by the CPU
* This is a synhcronization issue between CPU and GPU. Something like in the NVIDIA driver's case.
I develop an embedded application based on the following prototype HW and SW components:
* Intel Atom CPU
* VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
* Linux (Ubuntu with xorg-edgers https://launchpad.net/~xorg-edgers/+archive/ppa)
The plan is to use OpenGL for 2D acceleration and maybe some effects. I have written a simple benchmarking application to measure the hardware's texturing performance. You can find the benchmarking application here (build instructions are in head comment): http://pastebin.com/f5f9c076f
I have monitored the performance of the benchmarking application on both the prototype and my developer hardware. (Developer HW and SW are: Intel CPU, video card with dedicated video memory and NVIDIA GPU and Linux.)
What I have found is that the prototype hardware has acceptable texturing performance (for my purpose) but it has very high CPU usage while only the GPU should work. The GPU works on 100% (monitored by intel_gpu_top) as expected and one CPU core (or one Hyperthread?) is about 70%. On my developer box the same benchmark runs GPU 100% and CPU near 0% as expected.
To tell the truth the CPU 0% on the develpment box could only be achieved by working around a bug in the NVIDIA driver. See this post: http://www.nvnews.net/vbulletin/showthread.php?t=131319
My question is what could cause the CPU usage? How could I monitor it? Is there a way to draw textures with GPU without CPU usage?
I have three ideas:
* The memory bus is allocated by the GPU. CPU tries to access the memory and has to wait for GPU to finish texture transfer. These waits are counted as CPU usage while nothing can be done.
* Some tasks of texturing is not implemented on GPU and that work must be done by the CPU
* This is a synhcronization issue between CPU and GPU. Something like in the NVIDIA driver's case.
regards
Arti
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi asch,
I haven't developed on the Atom or 945GME based platform. So I am going to let someone more experienced to answer those.
Regarding your question on how to monitor CPU usage, I wanted to suggest using the utility 'top'. I feel like you might have already used this, but just in case. BTW, how are you measuring CPU usage?
Also, it would help if you can provide some screenshots of the data you are seeing from the 'intel_gpu_top' tool and the regular 'top' tool.
Cheers,
-Ganesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Ganesh,
Thanks for your reply! Here are the snapshots of top and intel_gpu_top.
a.out is the benchmarking application. There is a spooky conformity between "texture fetch" and CPU%. Does that mean that the bottleneck is the memory bus?
The other one I do not understand is texture decompression. The benchmarking application uses uncompressed textures. BTW is there support for lossless texture compression? Compression may help memory bandwidth but lossy compression is not acceptable for our application.
Cheers
Andrew
Quoting - Ganesh (Intel)
Thanks for your reply! Here are the snapshots of top and intel_gpu_top.
a.out is the benchmarking application. There is a spooky conformity between "texture fetch" and CPU%. Does that mean that the bottleneck is the memory bus?
The other one I do not understand is texture decompression. The benchmarking application uses uncompressed textures. BTW is there support for lossless texture compression? Compression may help memory bandwidth but lossy compression is not acceptable for our application.
Cheers
Andrew
Quoting - Ganesh (Intel)
Also, it would help if you can provide some screenshots of the data you are seeing from the 'intel_gpu_top' tool and the regular 'top' tool.
top - 08:59:33 up 9 min, 7 users, load average: 0.74, 0.70, 0.40 Tasks: 152 total, 4 running, 148 sleeping, 0 stopped, 0 zombie Cpu(s): 33.8%us, 8.6%sy, 0.0%ni, 57.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2052236k total, 437172k used, 1615064k free, 11208k buffers Swap: 0k total, 0k used, 0k free, 267752k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1691 asch 20 0 27936 5520 2660 S 65 0.3 5:16.23 a.out 1183 root 20 0 55912 12m 6788 S 9 0.6 0:54.11 Xorg 1748 root 20 0 2532 724 584 R 6 0.0 0:26.65 intel_gpu_top 1562 asch 20 0 79984 23m 7796 S 5 1.2 0:28.76 compiz.real 1642 asch 20 0 38172 13m 9364 S 1 0.7 0:08.28 gnome-terminal 1716 asch 20 0 2468 1180 884 R 1 0.1 0:03.75 top 1936 asch 20 0 2468 1176 884 R 1 0.1 0:00.10 top 1 root 20 0 2528 1488 1120 S 0 0.1 0:01.98 init
render clock: 400 Mhz display clock: 320 Mhz ring idle: 3%: ring space: 111/126976 (0%) task percent busy Color calculator: 89%: Bypass FIFO: 89%: Intermediate Z: 81%: Pixel shader: 79%: Sampler Cache: 78%: Map L2: 78%: Filtering: 77%: Windowizer: 77%: Texture decompression: 77%: Perspective interpolation: 76%: Projection and LOD: 76%: Dependent address calculation: 75%: Texture fetch: 65%: Dispatcher: 47%: Setup engine: 23%: Map filter: 10%: Strips and fans: 2%:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for that post Asch.
One more question: which graphics driver and version are you using? As in are you using the IEGD driver or the one from intellinuxgraphics.org?
One more question: which graphics driver and version are you using? As in are you using the IEGD driver or the one from intellinuxgraphics.org?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One more question: which graphics driver and version are you using? As in are you using the IEGD driver or the one from intellinuxgraphics.org?
I was not aware that there were more drivers available for this Intel GPU. I am using the one that is available in Ubuntu Karmic Koala. And to be sure that it is the latest I have installed the xorg-edgers package archieve that updates the driver package regularly from git. The driver package is called xserver-xorg-video-intel. This package contains the X.org xf86-video-intel driver as described here: http://packages.ubuntu.com/karmic/xserver-xorg-video-intel.
Is it different from the one on http://intellinuxgraphics.org/? How can I query the version? Should I install the driver from source from Intel Linux Graphics?
![](/skins/images/7FC17B7B85029576C25F1E43CE255B51/responsive_peak/images/icon_anonymous_message.png)
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page