Иногда в процессе работы некоторый процесс отбирает все процессорное время процессора. Например, пережатие фильма в другой формат с помощью ffmpeg может сделать невозможным использование компьютера в течение нескольких часов. И nice не особо помогает. Особенно, если диск активно используется. В таком случае возникает желание просто отрезать кусок процессора этому жадному процессу, и больше не давать.
Как всегда, в Linux нашлось простое решение. Утилита cpulimit достаточно просто и надежно справилась с этой задачей. Можно привязываться к процессу по идентификатору, по имени исполняемого файла и по полному пути. Ограничение задается в процентах. Срабатывает не очень четко, но вполне можно подобрать.
Мануал достаточно простой, и мне показалось, что описывать особенности использования будет лишним. Но если вдруг кому-то все-таки будет непонятно - пишите, с радостью помогу, чем смогу :)
пятница, 26 июня 2009 г.
Подписаться на:
Комментарии к сообщению (Atom)
Вообще есть еще такая штука, как ionice, ограничивающее приоритет процесса по дисковым операциям.
ОтветитьУдалитьТак что необходимость cpulimmit остается под вопросом.
Спасибо, попробуем :)
ОтветитьУдалить> Например, пережатие фильма в другой формат с помощью ffmpeg может сделать невозможным использование компьютера в течение нескольких часов
ОтветитьУдалитьВ жизни не видел в линуксе таких проблем. Постоянно занимаюсь пережатием видео в 1-2 потока (на двухядернике) и компиляю софт с j5 (gentoo у меня). Никаких проблем с доступностью системы нету напрочь.
Приходите, покажу :)
ОтветитьУдалитьВообще, я не совсем понял, что Вы хотели этим сказать. Это похоже, как если бы владелец малолитражки сказал, что у него машина плохо тянет, когда он загрузит ее мешками цемента... А водитель камаза ответил бы: "В жизни не видел таких проблем! Постоянно вожу тонны цемента, и еще могу пару пассажиров захватить в салон!" :)
Слово "может" как бы намекает, что это не обязательно должно происходить у всех. Наверное, стоит уточнить: на слабых компьютерах :)
Я не понимаю логики процесса - где что должно тормозить? Дисковая активность - сомневаюсь. Это пара мегабайт в секунду на чтение, еще пара - на запись. Память? Тоже врядли. Процессор? Ну так у нас многозадачные компы, процесс с дефолтным приоритетом не сможет подвесить систему, чай, не виндовс у нас.
ОтветитьУдалитьТормозить должно там, где не хватает ресурсов. Если ресурсов хватает, то тормозить не должно. В моем случае это процессор, потому что он мало того что не многоядерный и у него небольшой кеш, так он к тому же еще и загружен обработкой видео. У мне процессор может тормозить даже если я просто зашел на сайт с множеством анимации. Если же на процессор идет не большая нагрузка, то довольно часто узким местом у меня становится 40-гиговый винт. Если мне не изменяет память, 2 метра в секунду - это близко к его пределу, а может даже и за ним.
ОтветитьУдалитьКонечно, такие скудные ресурсы в наш век могут показаться просто смешными. Однако, я не вижу смысла покупать двухъядерный комп, если для выполнения текущих задач может вполне подойти имеющийся.
Вообще говоря, стоимость работы программиста больше стоимости среднерыночных железок. Это я к тому, что вместо изобретения загадочных способов упростить себе работу, проще просто купить более мощный компьютер.
ОтветитьУдалитьИ это... опишите конфигурацию вашего компа :)
P.S. Мой 40-гиговый Seagate U6 выдавал до 50 мегабайт в секунду.
Я подозревал, что именно к этому Вы и сведете разговор :) Но, вообще говоря, покупать или не покупать - это личное дело каждого. Да и вопрос изначально технический. Может быть пример не совсем удачный. Можете придумать свой :) А ресурсы всегда можно израсходовать - было бы желание. Так что, давайте оставим тему рациональности, и, если хотите, обсудим техническую сторону проблемы.
ОтветитьУдалитьProcessor: Intel(R) Celeron(R) CPU 2.00GHz
Memory: 1027MB (748MB used)
-Display-
Resolution: 1280x1024 pixels
OpenGL Renderer: Mesa DRI Intel(R) 845G 20061017 x86/MMX/SSE2
-Multimedia-
Audio Adapter: ICH4 - Intel 82801DB-ICH4
-IDE Disks-
ST340015A
> Я подозревал, что именно к этому Вы и сведете разговор :)
ОтветитьУдалитьЯ просто предпочитаю решать технические проблемы техническими средствами, не городя софтовых костылей :)
Конфигурация вроде не самая плохая. У меня на похожей интернет-радио работает, кодирует mp3/ogg в 3 потока и декодирует в 1-2. Грузится при этом 80-90% проца, но никаких других проблем не вижу, mysql/apache/php/python не тормозят ни разу.
Это рабочая станция? А видеокарта у вас полноценная, или встроенная фигня как у меня? :) Я подозреваю, что если я поставлю нормальное видео, то большая часть раздражающих меня тормозов исчезнет.
ОтветитьУдалитьЭто сервер на площадке
ОтветитьУдалитьА где пример ? Но спасибо за упоминание:)
ОтветитьУдалить