#linux #linux-kernel
#linux #linux-ядро
Вопрос:
я хочу изменить /proc/sys/kernel/sched_rt_runtime_us . Будут ли изменения в файле сохраняться даже после перезагрузки? когда ядро считывает это обновленное значение?
Ответ №1:
Нет, /proc
не является постоянным. Однако большинство дистрибутивов Linux будут считывать начальные значения из файла, такого как /etc/sysctl.conf
. В этом случае вы можете установить это значение sysctl.conf
как:
kernel.sched_rt_runtime_us = yourvaluehere
man sysctl
Подробнее см..
Комментарии:
1. я создал файл /etc/sysctl.conf выше, а затем выполнил запуск $ service procps. не видел обновленного значения в файле /proc . Обновляется ли он?
Ответ №2:
/ proc предоставляет значения структур данных, внутренних для ядра, которые хранятся в ОЗУ, поэтому нет, изменение не является постоянным. Если вы хотите, чтобы эффект сохранялся постоянно, вы должны либо добавить строку, изменяющую значение, в сценарий инициализации, чтобы значение изменялось во время загрузки, либо вы должны изменить значение по умолчанию в исходном коде ядра. Для некоторых значений proc (но, вероятно, не для этого) вы также можете использовать параметр командной строки ядра.
Комментарии:
1. Также, если я изменю /proc/sys/kernel/sched_rt_runtime_us , вступит ли это в силу немедленно?
2. Загрузчик передает ядру командную строку с определенными параметрами и аргументами, которые влияют на поведение ядра во время выполнения. Хотя здесь это не очень актуально. Мне нужно было бы взглянуть на исходный код, чтобы быть уверенным на 100%, но я уверен, что изменение sched_rt_runtime_us вступит в силу немедленно.
3. когда я пытаюсь его отредактировать. в нем говорится: «sched_rt_runtime_us» E667: сбой Fsync. Есть идеи, что здесь не так?
4. Вы не должны редактировать файлы proc с помощью редактора, а вместо этого читать и записывать их с помощью оболочки (cat для чтения, echo для записи). Например, если вы хотите установить значение sched_rt_runtime_us равным 1000, вы должны ввести следующее: echo 1000 > /proc/sys/kernel/sched_rt_runtime_us
5. Использование синтаксиса Antti выше не сработало для меня даже с sudo. Вместо этого мне пришлось написать это следующим образом: sudo sysctl -w kernel.sched_rt_runtime_us = 1000000 (миллион микросекунд = 1 секунда).