ocehb: (Default)
ocehb ([personal profile] ocehb) wrote2013-12-12 10:50 pm
Entry tags:

Задача на собеседовании админу

Придумал subj: как стандартными средствами в gnu уних/линух окружении
запустить на параллельное выполнение задачи, чтобы la не превышал какое-либо
значение. Например: есть каталог с тучей больших файлов, всех их надо
зипнуть или гзипнуть, задания можно запускать параллельно,
общий la не должен превышать 2.5.

пс. наверно пятничная задачка :)

[identity profile] tarkhil.livejournal.com 2013-12-12 08:53 pm (UTC)(link)
Ну вообще-то один гзип дает LA=1...

[identity profile] knutov.livejournal.com 2013-12-12 10:30 pm (UTC)(link)
Не все так просто :)

Если бы все упиралось только в проц - было бы LA=1. Но гзип не на ссд выест все дисковые иопсы и по цепочке тупить начнет всё. И вот как бы в этой ситуации придумать так, чтобы приоритет на иопсы от гзипа автоматически понижался чтобы LA не поднималось выше заданного - это действительно интересная задачка.

Вот только дешевле тупо просто вообще все перевести на ссд.

[identity profile] nponeccop.livejournal.com 2013-12-12 11:19 pm (UTC)(link)
По условию задачи у нас гзип с тучей больших файлов и не 100500 ядер, а 2-3.

В такой ситуации gzip не выест ни IOPS, ни transfer speed. У Gzip никудышный по современным меркам алгоритм, скорость сжатия порядка 20 мб на ядро. Т.е. задача cpu-bound.

Но в условии не сказано, что крутится на машине. На непустой задаче мы вполне сможем упереться в IO, но, как я понимаю, загрузка всего лишь перейдет в графу wa, т.е. принципиально не важно, во что мы уперлись.

Можно попробовать слать гзипам стоп-конт, можно попробовать запустить процессы в cgroup и менять группе cpu.shares, но это linux specific/





[identity profile] knutov.livejournal.com 2013-12-12 10:28 pm (UTC)(link)
А ответ будет?

[identity profile] knutov.livejournal.com 2013-12-12 10:50 pm (UTC)(link)
Без разницы, мне просто интересно.

[identity profile] knutov.livejournal.com 2013-12-12 11:24 pm (UTC)(link)
Круто. Я о таком варианте вообще не думал )

[identity profile] vlad (from livejournal.com) 2013-12-13 12:30 am (UTC)(link)
в принципе правильно, но смахивает на читерство ;)

задачка из разряда: как передать параллельно кучу файлов с суммарной скоростью не больше 100кб/сек

[identity profile] vlad (from livejournal.com) 2013-12-13 06:29 pm (UTC)(link)
ну тут в любом случае необходим некий диспетчер (сейчас это make), который будет следить за LA и ограничивать. можно его баше написать, можно на руби,js,C и тп, принципиальной разницы нет