dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von weedy » 11.01.2020 00:09:31

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ß

Benutzeravatar
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

Beitrag von mistersixt » 11.01.2020 11:45:32

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.
Zuletzt geändert von mistersixt am 11.01.2020 15:20:29, insgesamt 1-mal geändert.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE

Benutzeravatar
Meillo
Moderator
Beiträge: 8816
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von Meillo » 11.01.2020 12:02:32

weedy hat geschrieben: ↑ zum Beitrag ↑
11.01.2020 00:09:31
Kann mir jemand erklären, warum das so ist?

Immerhin wenn ich zwischen Platten etwas hin und herkopiere wird es angezeigt.
Ich habe zwar nicht die Antwort, aber ein paar Ansaetze.

/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!

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von wanne » 12.01.2020 15:27:10

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.
rot: Moderator wanne spricht, default: User wanne spricht.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von JTH » 12.01.2020 16:39:51

wanne hat geschrieben: ↑ zum Beitrag ↑
12.01.2020 15:27:10
Ich würde das auf die Funktionsweise von iotop schieben.
Ich nicht :wink:
wanne hat geschrieben: ↑ zum Beitrag ↑
12.01.2020 15:27:10
Die ganzen debugingtools wie perf, strace oder gdb gehen anders herum. Die monitoren den Prozess selbst.
Das tut auch iotop.
wanne hat geschrieben: ↑ zum Beitrag ↑
12.01.2020 15:27:10
Deswegen braucht es auch root rechte.
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.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von wanne » 13.01.2020 09:44:11

Dokumentiert scheint mir das – außer in Code – nicht zu sein.
OK. Nochmal die Manpage gelesen:
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.
Das ist relativ eindeutig:
/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.

Benutzeravatar
Meillo
Moderator
Beiträge: 8816
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von Meillo » 13.01.2020 18:25:40

wanne hat geschrieben: ↑ zum Beitrag ↑
13.01.2020 09:44:11
OK. Nochmal die Manpage gelesen:
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.
Das ist relativ eindeutig:
/dev/{null,zero} sind character devices.
:THX:
Use ed once in a while!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: dd if=/dev/zero of=/dev/null # iotop zeigt keinen traffic

Beitrag von JTH » 13.01.2020 19:04:43

wanne hat geschrieben: ↑ zum Beitrag ↑
13.01.2020 09:44:11
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.
Ja, stimmt, unter /proc/*/io sind u.a. die selben Werte, die iotop per Taskstats auswertet:

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 */
[…]
wanne hat geschrieben: ↑ zum Beitrag ↑
13.01.2020 09:44:11
Da wird auch getrennt nach block- und characterdevices.
Tatsache, das ist wohl der Knackpunkt.
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten