Hi,
I'm new, but failed to find this topic on this site, so if this question is answered, please point me in the right direction.
I'm trying to understand how a 3D visualization program and graphics driver affects a realtime process that runs on an isolated cpu. See my setup, test results and questions below.
Computer Setup:
Realtime Process:
I have a realtime process that is isolated to CPU 0, it's address space (current and future) is mapped to physical memory, and it is given the highest realtime priority in the low-latency kernel (99) with SCHED_RR (round-robin scheduling. also tried FIFO). It's control loop is running at 1 kHz (1-ms loop). The timing is controlled and checked by using clock_gettime(CLOCK_MONOTONIC, ¤t_time) and clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &wakeup_time, NULL).
3D Graphics Process:
Simple OpenGL 3D rendering of a robot on a grid
Investigation:
How the NVIDIA and Nouveau graphics drivers affect the realtime process?
Pete
I'm new, but failed to find this topic on this site, so if this question is answered, please point me in the right direction.
I'm trying to understand how a 3D visualization program and graphics driver affects a realtime process that runs on an isolated cpu. See my setup, test results and questions below.
Computer Setup:
- Computer: Dell T7810
- Graphics Card: NVIDIA Quadro K2200 4GB
- Operating System: Ubuntu 14.04.1 LTS, Linux 3.13.0-44-lowlatency x86_64
- Processors: 16 Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
- Desktop Manager: Unity or Gnome (compiz) or Gnome (metacity) (tried all three)
Realtime Process:
I have a realtime process that is isolated to CPU 0, it's address space (current and future) is mapped to physical memory, and it is given the highest realtime priority in the low-latency kernel (99) with SCHED_RR (round-robin scheduling. also tried FIFO). It's control loop is running at 1 kHz (1-ms loop). The timing is controlled and checked by using clock_gettime(CLOCK_MONOTONIC, ¤t_time) and clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &wakeup_time, NULL).
3D Graphics Process:
Simple OpenGL 3D rendering of a robot on a grid
Investigation:
How the NVIDIA and Nouveau graphics drivers affect the realtime process?
- NVIDIA binary driver - version 340.76 from nvidia-340 (open source)
- X.Org X server - Nouveau display driver from xserver-xorg-video-nouveau (open source)
- NVIDIA driver: 3D graphics is very fast, but the realtime process exceeds its 1-ms loop time occasionally. Opening up a web browser also causes the realtime process to exceed its 1-ms loop time.
- Nouveau driver: 3D graphics is very laggy, but the realtime process can run at 2 kHz without exceeding its 0.5-ms loop time.
- What fundamental differences exist between the two types of graphics drivers.
- How does the NVIDIA driver cause an isolated process to slow down?
- Is there a way to use the NVIDIA driver while fixing the timing problem?
Pete