Почему большая часть дисковых операций ввода-вывода относится к jbd2, а не к процессу, который фактически использует ввод-вывод?

Después de fork(), tanto el padre como el hijo comienzan a correr, teóricamente simultáneamente. Por supuesto, en la práctica, se alternarían si está en un sistema monoprocesador, o si hay otros procesos que desean ejecutarse, o si el programador del sistema lo indica por alguna otra razón.

Es probable que el comportamiento de los bucles ocupados simultáneos como el que tiene en su ejemplo sea muy sensible a cómo reacciona el programador a cosas fuera de su programa. Así que no es algo en lo que quieras confiar.

Si agrega un sleep(1)explícito dentro del ciclo allí, debería ver un comportamiento más consistente. O, si realmente desea que dos procesos hagan algo en forma alternada, lo más rápido posible, deberá implementar algún tipo de sincronización.

16
04.02.2019, 04:37
1 ответ

jbd2 - это поток ядра, который обновляет журнал файловой системы.

Отслеживание активности файловой системы или диска с указанием процесса, который ее вызвал, затруднено, поскольку действия многих процессов объединены вместе. Например, если два процесса читают из одного и того же файла в одно и то же время, какой процесс будет учитывать чтение? Если два процесса пишут в один и тот же каталог, а каталог обновляется на диске только один раз (объединяя две операции), какой процесс будет учитывать запись?

В вашем случае, похоже, что большая часть трафика состоит из обновлений журнала. Это отслежено до программы обновления журнала, но нет никакой трассировки между обновлениями журнала и процессом (процессами), который вызвал операцию (операции) записи, требующую обновления журнала.

29
27.01.2020, 19:48

Теги

Похожие вопросы