Hi, ich führe folgenden Befehl aus:
dd if=/dev/zero of=/dev/null
ermittle mit ps die PID:
ps -C dd
und erhalte eine eindeutige PID
dann checke ich per
strace -p <PID> # es werden Daten übertragen
top -p <PID> # CPU Auslasting bei 100%, MEM 0%
iotop -p <PID>:
<PID> be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % dd if=/dev/zero of=/dev/null
Kann mir jemand erklären, warum das so ist?
Immerhin wenn ich zwischen Platten etwas hin und herkopiere wird es angezeigt.
Nachtrag:
^C725300685+0 Datensätze ein
725300684+0 Datensätze aus
371353950208 Bytes (371 GB) kopiert, 425,068 s, 874 MB/s
Gruß
dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
Nur eine Vermutung: vielleicht gehen die Daten am "virtual memory" komplett vorbei bei diesen beiden speziellen Devices, und iotop bekommt daher nichts mit. Wenn Du auf auf eine SD-Karte/USB-Stick schreibst, dann siehst Du aber sicherlich Daten?
Gruss, mistersixt.
Gruss, mistersixt.
Zuletzt geändert von mistersixt am 11.01.2020 15:20:29, insgesamt 1-mal geändert.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
Ich habe zwar nicht die Antwort, aber ein paar Ansaetze.weedy hat geschrieben:11.01.2020 00:09:31Kann mir jemand erklären, warum das so ist?
Immerhin wenn ich zwischen Platten etwas hin und herkopiere wird es angezeigt.
/dev/zero und /dev/null sind beides virtuelle Devices. Ein Programm, das dazwischen Daten kopiert transferiert tatsaechlich Daten, die die dd-Ausgabe dann auch anzeigt. Das Programm tut auch etwas, wie top zeigt. Die Aktion fuehrt aber zu keiner Aktivitaet im IO-Bereich, weil das vermutlich schon vom Kernel direkt umgesetzt wird und gar nicht bis dorthin kommt, wo iotop nachschaut.
EDIT: Ach, mistersixt hat auch schon geantwortet ...
Wenn's jemand technisch genauer weiss, wuerd's mich auch interessieren.
Use ed once in a while!
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
Ich würde das auf die Funktionsweise von iotop schieben. Mir gefällt die sowieso nicht: Das guckt zuerst auf welche Devices zugegriffen wird und ordnet das dann den Prozessen zu. Am ende wird die Ausgabe gefiltert. Deswegen braucht es auch root rechte. /dev/null und /dev/zero scheint es nicht zu monitoren. Genau so wenig wie pipes.
Die ganzen debugingtools wie perf, strace oder gdb gehen anders herum. Die monitoren den Prozess selbst. Entsprechend weniger entgeht denen.
Die ganzen debugingtools wie perf, strace oder gdb gehen anders herum. Die monitoren den Prozess selbst. Entsprechend weniger entgeht denen.
rot: Moderator wanne spricht, default: User wanne spricht.
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
Ich nicht
Das tut auch iotop.wanne hat geschrieben:12.01.2020 15:27:10Die ganzen debugingtools wie perf, strace oder gdb gehen anders herum. Die monitoren den Prozess selbst.
iotop benutzt die Taskstats-Schnittstelle des Kernels, über Netlink-Sockets. Ich meine, letztere brauchen einfach (meist/immer?) weitreichendere Berechtigungen, als ein normaler Benutzer hat.
iotop zeigt also hauptsächlich IO-Statistiken an, die der Kernel selbst liefert. Ich nehme mal, wie Meillo, an, dass der Kernel IO auf /dev/{null,zero} dort einfach nicht mit einrechnet. Dokumentiert scheint mir das – außer in Code – nicht zu sein.
Manchmal bekannt als Just (another) Terminal Hacker.
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
OK. Nochmal die Manpage gelesen:Dokumentiert scheint mir das – außer in Code – nicht zu sein.
Das ist relativ eindeutig:Total DISK READ and Total DISK WRITE values represent total read and write bandwidth between processes and kernel threads on the one side and kernel block device subsystem on the other.
/dev/{null,zero} sind character devices.
Ich nehme an, das wird das selbe sein, was auch über /proc/*/io für user zugänglich exposed wird. Beides braucht das Kernelflag CONFIG_TASK_IO_ACCOUNTING. Da wird auch getrennt nach block- und characterdevices. Nehme an, dass iotop nur ersteres ließt. – Auch wenn ich es jetzt nirgends finde.
rot: Moderator wanne spricht, default: User wanne spricht.
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
wanne hat geschrieben:13.01.2020 09:44:11OK. Nochmal die Manpage gelesen:Das ist relativ eindeutig:Total DISK READ and Total DISK WRITE values represent total read and write bandwidth between processes and kernel threads on the one side and kernel block device subsystem on the other.
/dev/{null,zero} sind character devices.
Use ed once in a while!
Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic
Ja, stimmt, unter /proc/*/io sind u.a. die selben Werte, die iotop per Taskstats auswertet:wanne hat geschrieben:13.01.2020 09:44:11Ich nehme an, das wird das selbe sein, was auch über /proc/*/io für user zugänglich exposed wird. Beides braucht das Kernelflag CONFIG_TASK_IO_ACCOUNTING.
Code: Alles auswählen
$ cat /usr/include/linux/taskstats.h
[…]
#define TASKSTATS_HAS_IO_ACCOUNTING
/* Per-task storage I/O accounting starts */
__u64 read_bytes; /* bytes of read I/O */
__u64 write_bytes; /* bytes of write I/O */
__u64 cancelled_write_bytes; /* bytes of cancelled write I/O */
[…]
Tatsache, das ist wohl der Knackpunkt.
Manchmal bekannt als Just (another) Terminal Hacker.