- Posts: 1
- Thank you received: 0
Reducing latency on multicore pc's - Success!
- tensor
- Offline
- New Member
-
Less
More
13 years 3 months ago #36865
by tensor
Replied by tensor on topic Reducing latency on multicore pc's - Success!
Thanks a lot, Spainman! Due to your tweaks I was able to reduce the latency significantly.
I started with a pretty constant max jitter of 40000.
First tweak was an overall reconfiguration of the bios according to Spainman's first post. In order to be able to change the Vanderpool Technology (to disable it) I had to start the PC into BIOS after a cold start. If I go into BIOS after a reboot, the option is not available.
Next I applied the interrupt reassignment with the very handy tools provided by Spainman.
After these changes, the longterm jitter was between 500 and 3500. However, starting glxgears caused peaks up to 70000. So I have replaced the NVidia video card by an ATI and now the jitter is always below 3500.
The final hardware setup is:
Mainboard: ASUS P5B deluxe
Processor: Core2Duo E6600 2x2.4GHz
RAM: 4 GB Corsair PC2-800 CL4
Video: Radeon X300, 128MB
HDD: 80GB Samsung IDE
-> 3500 max Jitter with 5 glxgears and FullHD video playback (which shows only a few frames every 10 seconds) mesured for 1 hour.
cheers,
stefan
I started with a pretty constant max jitter of 40000.
First tweak was an overall reconfiguration of the bios according to Spainman's first post. In order to be able to change the Vanderpool Technology (to disable it) I had to start the PC into BIOS after a cold start. If I go into BIOS after a reboot, the option is not available.
Next I applied the interrupt reassignment with the very handy tools provided by Spainman.
After these changes, the longterm jitter was between 500 and 3500. However, starting glxgears caused peaks up to 70000. So I have replaced the NVidia video card by an ATI and now the jitter is always below 3500.
The final hardware setup is:
Mainboard: ASUS P5B deluxe
Processor: Core2Duo E6600 2x2.4GHz
RAM: 4 GB Corsair PC2-800 CL4
Video: Radeon X300, 128MB
HDD: 80GB Samsung IDE
-> 3500 max Jitter with 5 glxgears and FullHD video playback (which shows only a few frames every 10 seconds) mesured for 1 hour.
cheers,
stefan
- green751
- Visitor
-
13 years 2 months ago #38173
by green751
Replied by green751 on topic Reducing latency on multicore pc's - Success!
Just thought I'd report some results here.
I bought and have installed a Gigabyte GA-E350N motherboard with 4 GB DDR1600 RAM. Storage is a 64 GB SSD. It boots an install from the latest live CD in about 20 seconds. For those that don't know, this is a mini itx low power PC with a dual core AMD cpu running at 1.6Ghz. The CPU includes an integrated Radeon GPU, although I am not using it at the moment because loading the radeon drivers seemed to greatly increase latency in previous testing.
I tried various configurations in the bios and grub to improve latency test scores. Oddly, it seemed to give better scores when I did *not* use the ISOLCPUs parameter, giving me stable 10000/4000 numbers with both CPUs enabled but all the other BIOS switches set as described here.
I then decided to try the scripts here and check latency, including running the ISOLCPUS parameter. So far it's running numbers of about 4000/1200 for latency running two copies of glxgears and browsing with a copy of firefox... a significant improvement if correct (this is, after all, a benchmark instead of real work).
Just another data point for you. I'll post later results after I run it in for 24 hours. I might try changing the base thread period to match the servo, and change the servo time to something like 125us, to simulate running an 8khz servo thread. If anyone can think of latency test settings to try to verify a servo thread that fast will really work, I'd appreciate it.
This computer is a replacement for my mill control PC, so I'll be installing a Mesa 5i20 and servo card for use, IE no software stepping... although the reason I want low latency is that I'd like to try doing software commutation on some brushless servos.
Erik
I bought and have installed a Gigabyte GA-E350N motherboard with 4 GB DDR1600 RAM. Storage is a 64 GB SSD. It boots an install from the latest live CD in about 20 seconds. For those that don't know, this is a mini itx low power PC with a dual core AMD cpu running at 1.6Ghz. The CPU includes an integrated Radeon GPU, although I am not using it at the moment because loading the radeon drivers seemed to greatly increase latency in previous testing.
I tried various configurations in the bios and grub to improve latency test scores. Oddly, it seemed to give better scores when I did *not* use the ISOLCPUs parameter, giving me stable 10000/4000 numbers with both CPUs enabled but all the other BIOS switches set as described here.
I then decided to try the scripts here and check latency, including running the ISOLCPUS parameter. So far it's running numbers of about 4000/1200 for latency running two copies of glxgears and browsing with a copy of firefox... a significant improvement if correct (this is, after all, a benchmark instead of real work).
Just another data point for you. I'll post later results after I run it in for 24 hours. I might try changing the base thread period to match the servo, and change the servo time to something like 125us, to simulate running an 8khz servo thread. If anyone can think of latency test settings to try to verify a servo thread that fast will really work, I'd appreciate it.
This computer is a replacement for my mill control PC, so I'll be installing a Mesa 5i20 and servo card for use, IE no software stepping... although the reason I want low latency is that I'd like to try doing software commutation on some brushless servos.
Erik
- ArcEye
- Offline
- Junior Member
-
Less
More
- Posts: 22
- Thank you received: 240
13 years 2 months ago #38181
by ArcEye
Replied by ArcEye on topic Reducing latency on multicore pc's - Success!
Sounds promising
Don't forget anyone reporting results to put the full results on the wiki
wiki.linuxcnc.org/cgi-bin/wiki.pl?Latency-Test
Go to the 5th line down and a link called Basic Steps to see how to sign in to edit pages
Don't forget anyone reporting results to put the full results on the wiki
wiki.linuxcnc.org/cgi-bin/wiki.pl?Latency-Test
Go to the 5th line down and a link called Basic Steps to see how to sign in to edit pages
- green751
- Visitor
-
13 years 2 months ago #38225
by green751
Replied by green751 on topic Reducing latency on multicore pc's - Success!
I've added mine.
Although, interestingly enough, I have even "better?" results now.
As mentioned, I wanted to try a fast servo loop because I'm hoping to try out software commutation of my brushless servos.
So I tried another couple of tweaks to my machine configuration, and not finding anything that helped any more than the above listed scripts and IRQ reassignment, I gave a latency test with a fast servo loop a try:
# latency-test 25us 125us
... then I ran my "exercise" script, which starts up a few copies of glxgears and also runs totem playing a full motion video file (an example ogg theora clip from the mplayer site) in a continuous loop.
I'll check on it tonight when I get home (I like to run 24 hour tests), but so far it seems both threads have jitter around 2000. (not 20,000, *2000* ns).
I'm guessing this is because the shorter period on the servo thread means the thread code stays in the processor cache all the time? Has anyone else seen or tried this?
Thanks,
Erik
Although, interestingly enough, I have even "better?" results now.
As mentioned, I wanted to try a fast servo loop because I'm hoping to try out software commutation of my brushless servos.
So I tried another couple of tweaks to my machine configuration, and not finding anything that helped any more than the above listed scripts and IRQ reassignment, I gave a latency test with a fast servo loop a try:
# latency-test 25us 125us
... then I ran my "exercise" script, which starts up a few copies of glxgears and also runs totem playing a full motion video file (an example ogg theora clip from the mplayer site) in a continuous loop.
I'll check on it tonight when I get home (I like to run 24 hour tests), but so far it seems both threads have jitter around 2000. (not 20,000, *2000* ns).
I'm guessing this is because the shorter period on the servo thread means the thread code stays in the processor cache all the time? Has anyone else seen or tried this?
Thanks,
Erik
- green751
- Visitor
-
13 years 2 months ago - 13 years 2 months ago #38229
by green751
Replied by green751 on topic Reducing latency on multicore pc's - Success!
Final numbers after 24 hours for the above mentioned 25us/125us run:
126322 2803
27122 2298
Erik
126322 2803
27122 2298
Erik
Last edit: 13 years 2 months ago by green751. Reason: typo
- kivig
- Offline
- New Member
-
Less
More
- Posts: 2
- Thank you received: 0
12 years 10 months ago #42239
by kivig
Replied by kivig on topic Reducing latency on multicore pc's - Success!
Thanks!
Had about 35000, now it shows jittering of 3500.
Though if I put max jittering anywhere lower than 12000 it glitches (while accelerating speed goes up, then it starts to go down), but still - 12000 is much much better
Btw - is it normal that launch of any aplication produces enormous lag.. like 350000 and more? Any other sort of abuse doesn't do that.
Had about 35000, now it shows jittering of 3500.
Though if I put max jittering anywhere lower than 12000 it glitches (while accelerating speed goes up, then it starts to go down), but still - 12000 is much much better
Btw - is it normal that launch of any aplication produces enormous lag.. like 350000 and more? Any other sort of abuse doesn't do that.
Time to create page: 0.156 seconds