LinuxCNC Hardware 2024: Welche PCs können verwendet werden?

LinuxCNC Logo

Auch wenn LinuxCNC an sich keine hohen Systemanforderungen benötigt, eignet sich nicht jeder PC als Steuerung für eine Maschine. Was es außer der Prozessorgeschwindigkeit noch zu beachten gibt und welche PCs sich nicht eignen erklärt dieser Artikel.

Systemanforderungen

Die recht geringen Systemanforderungen lauten nach dem Wiki wie folgt:

  • 700 MHz x86 Prozessor (1.2 GHz x86 Prozessor empfohlen) oder Raspberry Pi 4 bzw. 5.
  • Mindestens 512 MB Arbeitsspeicher, für komplexere GUIs wird mindestens 4 GB empfohlen
  • 8 GB freier Festplattenspeicher
  • Grafikkarte mit mindestens 1024x768 möglicher Auflösung oder onboard Grafik Treiber
  • Internetverbindung (nicht unbedingt benötigt aber sehr empfehlenswert)

Verarbeitungsgeschwindigkeit - Latency & Jitter

Schaut man sich Forenbeiträge zu geeigneten PCs an, fallen häufig die beiden Begriffe Latency & Jitter.

Latency

Damit das System stabil läuft, müssen immer wiederkehrende Aufgaben erledigt werden, unter anderem die Generierung von Schritten für den Motortreiber. Diese Aufgaben sind zeitlich kritisch, denn wenn bspw. die Schrittgenerierung zu lange stoppt, bekommt der Motortreiber keine Signale mehr und die Maschine verfährt nicht wie gewünscht. Dies kann zu Fehlern und sogar zu einem Crash der Maschine führen.

Damit diese Aufgaben regelmäßig ausgeführt werden, gibt es in LinuxCNC zwei Hauptfunktionen, auch Threads genannt.

Der servo-thread, welcher üblicherweise jede Millisekunde läuft, ist hauptverantwortlich für die Generierung von Schritten, der base-thread übernimmt alle anderen weniger zeitkritischen Aufgaben. Der base-thread wird üblicherweise nur alle 25 Millisekunden gestartet.

Da ein CPU-Kern immer nur eine Aufgabe zeitgleich ausführen kann, muss zum starten der Threads häufig ein anderer Prozess unterbrochen werden, was Zeit kostet. Daher kommt es vor, das Threads später als geplant gestartet werden. Diese Verzögerung nennt man Latency.

Wenn ein Thread zu spät gestartet wird und der folgende planmäßig, ist die Periodendauer zwischen den Threads kürzer als erwartet. Daher kann die Latency auch negative Werte annehmen.

Die Latency berechnet sich also mit

Latency=ZeitzwischenThreadsGeplanteZeitzwischenThreadsLatency=Zeit zwischen Threads - Geplante Zeit zwischen Threads

Jitter

Kritischer als lange Verzögerungszeiten sind inkonsistente Verzögerungen. Das bedeutet, dass der thread teilweise planmäßig gestartet wird und teilweise mit hoher Verzögerung.

Die maximale Abweichung von der geplanten Periodendauer wird Jitter genannt. Sie entspricht also dem Absolutwert der maximal aufgetretenen Verzögerungen.

Beispiel: ein PC hat eine gemessene Latency von min=20msmin=-20ms und max=15msmax=15ms, dann entspricht der Jitter 20ms.

Wie viel Jitter ist akzeptabel für LinuxCNC?

Mit wie viel Jitter eine Maschine noch zuverlässig läuft, ist abhängig von der verwendeten Technologie. Früher wurden viele Motortreiber direkt über den Parallelport angesteuert und die Schritte wurden mit LinuxCNC generiert. Diese Methode wird Soft-Stepping genannt.

Heutzutage gibt es viele Schnittstellenkarten, welche die Generierung der Schritte mithilfe eines FPGA durchführen. Dazu gehören unter anderem auch die häufig genutzten Mesa-Karten. Außerdem können Mototreiber teilweise direkt über ein Bussystem wie zum Beispiel EtherCat angesteuert werden. Dann ist keine Schrittgenerierung notwendig.

Wird Soft-Stepping genutzt, ist eine konsistente Ausführung von großer Bedeutung. Um Schritte zuverlässig zu generieren, sollte der Jitter unter 30-50ms liegen. Je geringer der Wert desto besser.

Falls auf Soft-Stepping verzichtet wird, ist das System deutlich weniger zeitkritisch. Der Jitter sollte hier unter 100ms liegen, damit das System ordnungsgemäß funktioniert.

Wie kann der Jitter getestet werden?

Um den Jitter auf einem PC zu testen, kann das "Latency Test Tool" verwendet werden, welches automatisch mit LinuxCNC installiert wird.

Das Tool wird mit folgendem Befehl über die Kommandozeile gestartet:

latency-test <servo_period_us> <base_period_us>

Wobei statt <servo_period_us> und <base_period_us> die gewünschten Zeiten in Mikrosekunden angegeben werden. Diese Parameter können auch weggelassen werden, dann startet das Tool mit den Standardzeiten von 1ms für den servo-thread bzw. 25ms für den base-thread.

Latency Test Tool

Das Tool sollte dann für einige Minuten oder Stunden laufen. Um die besten Ergebnisse zu erhalten sollte der PC dabei belastet werden, man sollte also verschiedene Fenster öffnen, Videos schauen etc. LinuxCNC sollte dabei jedoch nicht geöffnet werden.

Wie kann der Jitter verbessert werden?

Falls der Test ungenügende Ergebnisse liefert, gibt es einige Möglichkeiten, welche ausprobiert werden können.

  • BIOS Einstellungen: Im BIOS des PCs sollten sämtliche Energiespar-Optionen deaktiviert werden, genau so wie ungenutzte Hardware oder andere Einstellungen, welche die Leistung des Systems beeinflussen
  • Grafikkarte: Wird ein interner Grafikchip verwendet, kann eine Grafikkarte Abhilfe schaffen
  • Andere Linux Distribution: Verschiedene Kernel und Distributionen liefern unterschiedliche Ergebnisse. Ein Wechsel kann dem Problem also möglicherweise Abhilfe schaffen.

Liste mit getesteten PCs

Da PC-Hersteller ihre Produkte natürlich nicht für LinuxCNC testen, muss auf die Tests von anderen Nutzern zurückgegriffen werden. Diese finden sich im LinuxCNC-Forum und sind hier einmal tabellarisch aufgelistet.

Reference ist dabei die Nummer des Posts mit dem Test, man gelangt somit mit der URL

https://forum.linuxcnc.org/18-computer/39371-results-of-latency-test-list-of-computers-tested-for-use-with-linuxcnc#REFERENCE

direkt dorthin, wenn man REFERENCE durch die entsprechende Nummer ersetzt.

ReferenceSystemServo Max [uS]Servo Min [uS]Servo Jitter [uS]Base Max [uS]Base Min [uS]Base Jitter [uS]OSCPU | coresGPU
252004ThinkCentre M910Q-48,34548,30Debian GNU/Linux bookworm/sidCore(TM) i5-6500T | 4 cHD Graphics 530
207941Acer , Aspire 5740 {laptop}-44,444,344,40Linux Mi 19.3Core(TM) i3 CPU M 330 | 2cPark [Mobility Radeon HD 5430/5450/5470]
191209ASRock, To Be Filled By O.E.M.-21,821,821,8-2525,625,6Debian GNU/Linux 10 (buster)Iel(R) Celeron(R) CPU J3355UD {probably chipset gpu?}
248143ASRock, To Be Filled By O.E.M.-5,45,45,4-66,66,6Debian GNU/Linux 10 (buster)Iel(R) Celeron(R) CPU J3355 | 2 c
172788ASUS AT5MNI-93,7121121-57,259,659,6Debian GNU/Linux 10 (buster)Atom(TM) CPU D510 | 2cAtom Processor D4xx/D5xx/N4xx/N5xx
236824ASUSTeK COMPUTER INC., All Series-30,430,330,40Debian GNU/Linux 10 (buster)Core(TM) i7-4790K CPU | 4 cXeon E3-1200 v3/4th Gen
238144ASUSTeK Computer INC., Maximus Extreme-6,16,26,20Debian GNU/Linux 10 (buster)Core(TM)2 Quad CPU Q9550 | 4 cRV710 [Radeon HD 4350/4550]
287524ASUSTeK COMPUTER INC., PRIME J4005I-C-88,892920Debian GNU/Linux 12 (bookworm)Celeron(R) J4005 | 2 cGeminiLake [UHD Graphics 600]
240319ASUSTeK Computer INC., System Product Name-13,413,613,6-18,118,718,7Debian GNU/Linux 10 (buster)Quad-Core AMD Opteron(tm) Processor 1354RS780C [Radeon 3100]
272535AWOW, PC BOX-986,5915,1986,50Debian GNU/Linux 12 (bookworm)Celeron(R) CPU J3455 | 4cHD Graphics 500
240334BIOSTAR Group, A870U3-555-5,45,95,9Debian GNU/Linux 10 (buster)AMD Phenom(tm) II X6 1035T 6cRV710 [Radeon HD 4350/4550]
197489Dell Inc., OptiPlex 701018,620,220,20Debian GNU/Linux 10 (buster)Core(TM) i5-3470 | 1c {multicore disabled in bios}Xeon E3-1200 v2/3rd Gen
212460Dell Inc., OptiPlex 790-7183,683,60Debian GNU/Linux 10 (buster)Core(TM) i5-24002nd Generation Core Processor Family Iegrated Graphics Coroller
193389Dell Inc., OptiPlex 9010-75,774,375,70Debian GNU/Linux 10 (buster)Core(TM) i5-3570 | 4cXeon E3-1200 v2/3rd Gen
193787Dell Inc., OptiPlex 9020-38,243,543,50Debian GNU/Linux 10 (buster)Core(TM) i5-4670 | 4cXeon E3-1200 v3/4th Gen
193787Dell Inc., OptiPlex 9020-45,249,349,30Debian GNU/Linux 10 (buster)Core(TM) i5-4670 | 4cOland [Radeon HD 8570 / R7 240/340 OEM]
211211Dell Inc., OptiPlex 9020M {micro}-44,54244,50Linux Mi 19.3Core(TM) i5-4590T | 4cXeon E3-1200 v3/4th Gen
211401Dell Inc., OptiPlex 980-6,96,96,9-9,49,39,4Debian GNU/Linux 10 (buster)Core(TM) i5 CPU 650Core Processor Iegrated Graphics Coroller
236739Dell Inc., OptiPlex 980-10,110,210,2-14,621,821,8Debian GNU/Linux 10 (buster)Core(TM) i5 CPU 650 | 2 cCore Processor Iegrated Graphics Coroller
180536Dell Inc., Precision WorkStation T3500-21,120,721,1-2020,320,3Linux Mi 20Xeon(R) CPU W3565GF106GL [Quadro 2000]
179989ECS, BAT-I-57,764,364,30Linux Mi 20Celeron(R) CPU J1800Atom Processor Z36xxx/Z37xxx
184089ECS, BAT-I-64,282,882,80Linux Mi 20Celeron(R) CPU J1800 | 2cAtom Processor Z36xxx/Z37xxx
172802FUJITSU, ESPRIMO Q920-34,737,337,30Debian GNU/Linux 10 (buster)i7-4765T | 4cXeon E3-1200 v3/4th Gen
180684FUJITSU, ESPRIMO_D956-450,8448,6450,80Debian GNU/Linux 10 (buster)I7-6700 | 1c {?????}HD Graphics 530
222359FUJITSU, FUTRO S720-178,4214,4214,40Debian GNU/Linux 10 (buster)AMD GX-217GA SOC with Radeon(tm) HD GraphicsKabini [Radeon HD 8280E]
186419Gigabyte Technology Co., Ltd., B460MD3H-10,612,512,50Debian GNU/Linux 10 (buster)Peium(R) Gold G6400Advanced Micro Devices, Inc. [AMD/ATI]
172496Gigabyte Technology Co., Ltd., P35-DS4-23,623,323,6-24,6104104Debian GNU/Linux 9 (stretch)Core(TM)2 Quad | 4cCypress PRO [Radeon HD 5850]
190567Gigabyte Technology Co., Ltd., X570 AORUS ELITE-17,615,917,60Linux Mi 20Ryzen 5 3500X 6-CoreEllesmere [Radeon RX 470/480/570/570X/580/580X/590]
274288HARDKERNEL, ODROID-H2-89,589,989,90Debian GNU/Linux 12 (bookworm)Celeron(R) CPU J3455 | 4cGeminiLake [UHD Graphics 600]
186230Hewlett-Packard, HP Elite x2 1011 G1 Tablet-235,2260,9260,90Linux Mi 19.3Core(TM) M-5Y10cHD Graphics 5300
172695HP Compaq Elite 8300 SFF-1818,718,7-47,24949Debian GNU/Linux 10 (buster)I5-3570 | 4cXeon E3-1200 v2/3rd
179589HP Compaq Elite 8300 USDT-93,1105,7105,70Linux Mi 20i5-3470S | 4cXeon E3-1200 v2/3rd Gen
193142HP Compaq Pro 6300 SFF-37,324,537,30Linux Mi 20Core(TM) i7-3770 CPU @ 3.40GHz | 1c {?}Xeon E3-1200 v2/3rd Gen
206998HP t610 WW Thin Clie-34,334,834,80Linux Mi 19.3AMD G-T56N Processor | 2cWrestler [Radeon HD 6320]
233799Iel Corporation, NUC7i5BNH-83,786,486,40Debian GNU/Linux 10 (buster)Core(TM) i5-7260U | 1 cIel Corporation
179602Itautec S.A., Infoway-39,852,152,1-24,974,674,6Linux Mi 19.3Core(TM)2 Duo CPU E7500 | 1c?
179847Itautec S.A., Infoway-24,851,751,7-22,322,822,8Linux Mi 19.3Core(TM)2 Duo CPU E7500 | 1c?
224630ITX-ASRock880GXH-15,616,216,2-23,524,324,3Linux Mi 20.2Celeron(R) J4005 | 2 cUHD Graphics 605
181151K4-I5-4200U Aliexpress-60,368,468,40Debian GNU/Linux 10 (buster)i5-4200UHaswell-ULT
184367Lenovo 20EGS01900 Thinkpad W541-5654,5560Debian GNU/Linux 10 (buster)i7-4810MQ | 4cGK106GLM [Quadro K2100M] 4th Gen Core Processor Iegrated Graphics
180798LENOVO, 0674GEG {z61p}-878,5878,8878,80Linux Mi 19.3Core(TM)2 CPU T7200?
172205LENOVO, 10A8S1BX0N-7485850Linux Mi 19.3I5-4570 | 4cXeon E3-1200 v3/4th Gen
198736LENOVO, 10AAS3VA00 M93p-45,747,647,60Debian GNU/Linux 10 (buster)Core(TM) i5-4590T | 4cXeon E3-1200 v3/4th Gen
248552LENOVO, 10MQS36600 {M710q}-113,9106113,90Debian GNU/Linux 11 (bullseye)Core(TM) i5-6400T | 4 cHD Graphics 530
233326LENOVO, 10MR00xxxx {Thinkcere M710q Tiny i3-7100T}-117,3116,9117,30Debian GNU/Linux 11 (bullseye)Core(TM) i3-7100T | 2cHD Graphics 630
185724LENOVO, 20AV006BMZ {L540 laptop}-65,461,565,4-45,246,146,1Debian GNU/Linux 10 (buster)i5-4210M | 2c4th Gen Core Processor Iegrated Graphics
183735LENOVO, 2241BM7 {T500 laptop}-431,1428,8431,10Debian GNU/Linux 10 (buster)Core(TM)2 Duo CPU P8600 | 2cMobile 4 Series Chipset Iegrated Graphics Coroller
185849LENOVO, 2758MKG {W700DS Laptop}-408408,5408,50Debian GNU/Linux 10 (buster)Core(TM)2 Quad CPU Q9000G92GLM [Quadro FX 3700M]
185688LENOVO, 2774AP3 {x301 laptop}-523518,15230Debian GNU/Linux 10 (buster)Core(TM)2 Duo CPU U9400 | 2cMobile 4 Series Chipset Iegrated Graphics Coroller
185033LENOVO, 3254CTO {Edge 340 Laptop}-55,455,155,40Debian GNU/Linux 10 (buster)i5-3210M | 1c {Multi core off?}3rd Gen Core processor Graphics Coroller
184117LENOVO, 4157CTO {T530 laptop}-11,913,613,60Linux Mi 19.2Xeon(R) CPU W3550 | 4cGF106GL [Quadro 2000]
189570LENOVO, H215, Idea ceer-66,167670Debian GNU/Linux 10 (buster)AMD Athlon(tm) II X2 250RS780L [Radeon 3000]
187851OptiPlex 7010-82,969,682,90Debian GNU/Linux 10 (buster)I5-3570 | 4cXeon E3-1200 v2/3rd Gen
190397OptiPlex 7010 USFF-41,341,541,50Linux Mi 20i5-3470S | 4cXeon E3-1200 v2/3rd Gen
191033OptiPlex 780-37,835,537,8-31,832,832,8Linux Mi 19.3Core(TM)2 Duo CPU E8400 | 1c4 Series Chipset Iegrated Graphics Coroller
172308OptiPlex 980-19,317,819,3-19,917,619,9Debian GNU/Linux 10 (buster)i5 CPU 650 | 2cIerated
182603OptiPlex 980-11,914,214,2-18,419,419,4Debian GNU/Linux 10 (buster)I5 750 | 4cRV710 [Radeon HD 4550]
184500OptiPlex 980-11,911,711,9-16,11616,1Debian GNU/Linux 10 (buster)i7 CPU 870 | 4cRV710 [Radeon HD 4550]
184283OptiPlex FX160-396,4400,8400,80Debian GNU/Linux 10 (buster)Atom(TM) CPU 330771/671 PCIE VGA
184048RPi4 4GB-126,9146,9146,90Raspbian GNU/Linux 10 (buster)ARMv7 Processor rev 3
236754SAMSUNG ELECTRONICS CO., LTD., QX310/QX410/QX510/SF310/SF410/SF510-23,22424-24,65656Linux Mi 18.1Core(TM) i5 CPU M 480 | 2 cGT218M [GeForce 310M] | Core Processor Iegrated Graphics Coroller
185271Supermicro, Super Server-80,282,682,60Debian GNU/Linux 10 (buster)Peium(R) Gold G5420Intel Corporation