Intereting Posts
Документ, который будет отображаться в Интернете с использованием любого веб-сервера Linux Есть ли решение perl или awk для этой проблемы? Как передать список команд, отображаемых по «tab complete»? понимание / dev / disk / by-folders Debian просыпается с приостановления пароля Нажмите кнопку мыши 8 («браузер вперед») на кнопку мыши 2 («средний клик») на RHEL Как прокручивать страницы 1, .., N-1 и показывать страницу N в программе просмотра PDF? Bash: проверьте, равна ли ОДНА и ТОЛЬКО ОДНА из нескольких переменных Свойство командной строки CLI Linux 2.0 Поддерживает ли okular / poppler следующие перекрестные ссылки внутри документа в файлах PDF? Приостановка подключения невозможна при подключении USB-мыши VPN, который дает мне внутренний IP-адрес и позволяет мне получить внутреннюю сеть извне scp и сжимать одновременно, без промежуточного сохранения Использование sed для редактирования строк в файле с переменной Безопасно использовать параметр rsync -z для синхронизации базы данных (двоичная репликация Postgresql)?

Как определить, работает ли команда «nice»?

У меня есть процесс, который работает примерно на 100%. Поэтому я запускаю его с хорошим:

$ nice /dir/myamd.sh 

top команда показывает, что мой процесс по-прежнему близок к 100% (может быть, немного ниже 99%). Действительно ли nice команда работает?

Спасибо всем за ваши ответы! Могу ли я использовать как nice и cpulimit ? Потому что я хочу, чтобы мой процесс уступал другим и занимал только 80% CPU.

Nice изменяет относительный приоритет процесса. Если в CPU нет ничего другого, то по-прежнему нет ничего более высокого приоритета, поэтому он может продолжать использовать 100% CPU.

Многие современные машины имеют несколько ядер, поэтому, если у вас есть 4 ядра, но только 3 процесса, которые могут запускаться, это еще один пример, когда процесс может использовать 100% ядра независимо от хорошего уровня.

top и ps lax отобразит текущий хороший уровень всех процессов в системе в столбце NI .

Аналогия для хороших уровней и загрузки процессора

Подумайте о ЦП в качестве кассира на стойке регистрации в супермаркете. Если у вас многоядерный процессор, их несколько.

Каждый счетчик имеет очередь клиентов, ожидающих оплаты своих продуктов. Это очередь запуска процессора.

Длина очереди – текущая загрузка ЦП. В этот момент нагрузка на человека за прилавком.

Человек в очереди может быть приятным для людей позади, будучи полностью в порядке, позволяя им пройти мимо них в очереди, если им действительно нужно торопиться.

Кассир на прилавке по- прежнему имеет такую ​​же сумму, чтобы работать , и все еще работает в том же темпе (100%, пока очередь не пуста), но люди в очереди прибудут на счетчик в порядке, в зависимости от того, среди прочего, насколько они хороши для других людей в очереди.

В вашем случае супермаркет может быть довольно пустым, но есть один единственный клиент с его действительно большой тележкой, которую нужно проверить, а кассир работает так усердно, насколько может, обрабатывать все вещи, которые он покупает. Он очень милый, хотя … но это не имеет особого значения, кассир не замедлит успеть за чатом.

В системе Unix, в отличие от супермаркета, процессор будет обрабатывать процесс всего лишь на кусок времени, прежде чем отправить их обратно в очередь. Это значит, что один процесс не будет блокировать других.

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

Примечание. Я использую «CPU» выше, где в некоторых случаях я должен сказать «ядро». С точки зрения удобства пользователя нет никакой разницы.

nice команда работает как запроектированная, просто не так, как вы ожидаете.

Если вы действительно хотите ограничить использование ЦП и потенциально избавиться от имеющихся ресурсов ЦП, вы можете использовать:

 cpulimit -l 25 /dir/myamd.sh 

cpulimit будет контролировать использование процессора myadm.sh и дросселировать его с помощью SIGSTOP / SIGCONT, чтобы поддерживать его среднее значение при ограничении 25% (одного vCPU). В многоядерных / потоковых системах вы можете ограничить использование более чем на 100%.

Более эффективной альтернативой является использование групп , см., Например, этот блог для деталей.

Вы можете использовать команду ps, чтобы проверить, правильно ли вы набрали команду:

 $ nice -n 15 sm WILLY\ WILLIAM\ -\ Ego.m4a &> /dev/null & [1] 29426 $ ps -lp $! FS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 29426 2279 1 95 15 - 141822 poll_s pts/7 00:00:00 sm 

Вы можете увидеть уровень удовлетворенности (15, в данном случае) в точно подобранной колонке NI . Как только это будет сделано, вы должны расслабиться: все, что происходит, заключается в том, что программа работает без конкуренции за использование системных ресурсов, если она все еще достигает 100% CPU.

В вашем примере это, вероятно, не работает.

Вы не используете эту программу в фоновом режиме (&). Таким образом, это, вероятно, единственная программа, запущенная на этом TTY (кроме оболочки, которая ее начала).

Если вы запускаете вторую программу на другом TTY – например, в другом окне терминала – относительные хорошие уровни двух программ не будут иметь видимого эффекта.

https://unix.stackexchange.com/a/277633/29483