Параллельный многопоточный конвейер GNU использует мало ЦП, но тормозит сервер

Когда я перехожу от b к a от имени пользователя wilmes, почему сохраняется первоначальный владелец a (root)?

Потому что cpпо умолчанию (без флагов -aили -p) не изменяет время или владельца целевого файла. В вашем случае файл aпринадлежит root, но поскольку у вас есть права на запись через группу, вы можете модифицировать файл, в том числе обрезать его и перезаписать полностью. Чего вы не можете сделать, так это изменить временные метки, поскольку это может сделать только владелец файла.

Если целевой файл не существует, он будет создан с uid пользователя, запустившего cp, то есть wilmes. (И без привилегий суперпользователя вы также не могли изменить владельца.)

Однако, поскольку у вас также есть права на запись в каталог, вы можете сначала удалить целевой файл, а затем создать его заново, и в этом случае он будет принадлежать пользователю, запустившему cp.

1
28.09.2016, 16:29
1 ответ

Как говорит Лучано в комментарии, скорее всего, причиной является дисковый ввод-вывод.

Причина получения большего количества процессов в том, что ваш конвейер запускает как минимум 5 процессов. Таким образом, вы должны увидеть как минимум 64 * 5 запущенных процессов. Некоторые из них также могут запускать несколько потоков.

Параллельный дисковый ввод-вывод очень непредсказуем (см. https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/ ) и На практике невозможно сказать, сколько параллельных работ является оптимальным, поскольку это зависит от очень многих факторов.

Итак, чтобы оптимизировать ваш поток, я бы скорректировал количество заданий, пока вы не добьетесь максимальной пропускной способности. Вы можете использовать --joblog, чтобы узнать, как долго выполняется каждое задание.

0
28.01.2020, 01:10

Теги

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