Узнать sysctl значения по умолчанию? (не перезагружая)

Согласно Википедии это зависит от того, есть ли у Вас Сокет A или Сокет 754 Sempron. Сокет A является 64-разрядным, в то время как эти 754 являются 32-разрядными только. На основе поведения, которое Вы описали, я предположил бы, что это - Сокет 754.

10
23.07.2012, 10:13
2 ответа

Это не возможно в целом: ядро не сохраняет исходные значения (по крайней мере, в соответствии с Linux, который оно не делает, и это, вероятно, верно для других вариантов Unix). Значение установки хранится в переменной; когда Вы изменяете настройки, память, содержащая переменную, безвозвратно обновляется.

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

Для большинства настроек можно посмотреть в источнике ядра — kernel/sysctl.c и другие файлы. Вы будете видеть определения как

    {
            .procname       = "rmem_max",
            .data           = &sysctl_rmem_max,
            …
    },

net/core/sysctl_net_core.c), от которого можно проследить инициализацию sysctl_rmem_max переменная. В то время как этот инициализируется от константы, снимает довольно мало показаний C код для расширения.

4
27.01.2020, 20:03

На моей машине OpenBSD/etc/sysctl.conf перечисляет набор значения по умолчанию sysctl значения, но этот список не является исчерпывающим.

Вероятно, лучший способ состоит в том, чтобы прочитать sysctl код или спросить друга, который выполняет ту же ОС для его значений :)

0
27.01.2020, 20:03

Теги

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