Для большинства серверов RHEL7 RedHat предлагает увеличить sched_min_granularity_ns
до 10 мс и sched_wakeup_granularity_ns
до 15 мс.(Источник . Технически эта ссылка говорит о 10 мкс, что было бы в 1000 раз меньше. Это ошибка ).
Мы можем попытаться понять это предположение более подробно.
В современных ядрах Linux кванты времени процессора выделяются задачам с помощью CFS, полностью справедливого планировщика. CFS можно настроить с помощью нескольких настроек sysctl
.
kernel.sched_min_granularity_ns
kernel.sched_latency_ns
kernel.sched_wakeup_granularity_ns
Вы можете установить sysctl временно до следующей перезагрузки или навсегда в файле конфигурации, который применяется при каждой загрузке. Чтобы узнать, как применять этот тип настройки,найдите «sysctl» или прочитайте краткое введение здесь .
sched_min_granularity_ns
является наиболее заметным параметром. В исходном запланированном -дизайне -CFS.txt это было описано как единственная «настраиваемая» настройка, «для настройки планировщика с« рабочего стола »(с низкими задержками )на« server' (хорошая пакетная обработка )рабочих нагрузок».
Другими словами, мы можем изменить этот параметр, чтобы уменьшить накладные расходы на переключение контекста -и, следовательно, повысить пропускную способность за счет скорости отклика («задержки» ).
Я думаю, что эта настройка CFS имитирует настройку времени предыдущей сборки -, CONFIG _HZ . В первой версии кода CFS значение по умолчанию составляло 1 мс, что эквивалентно 1000 Гц для использования на рабочем столе. Другими поддерживаемыми значениями CONFIG _HZ были 250 Гц (по умолчанию )и 100 Гц для "серверной" стороны. 100 Гц также было полезно при запуске Linux на очень медленных процессорах, это была одна из причин, указанных , когда CONFIG _HZ впервые был добавлен в качестве параметра сборки на X86 .
Кажется разумным попробовать изменить это значение на 10 мс (, т. е. 100 Гц ), и измерить результаты. Помните, что sysctl измеряются в нс . 1 мс = 1 000 000 нс.
Мы можем видеть, что эта старая -настройка «сервера» все еще была очень актуальна в 2011 году для пропускной способности в некоторых высоконагруженных -тестах производительности :https://events.static.linuxfound.org/slides/2011/linuxcon/lcna2011_rajan.pdf
.
Значения по умолчанию для трех указанных выше параметров выглядят относительно близкими друг к другу. Это заставляет меня стремиться к простоте и умножать их все на один и тот же коэффициент :-). Но я попытался изучить это, и кажется, что может иметь значение и более конкретная настройка, поскольку вы настраиваете пропускную способность.
sched_wakeup_granularity_ns
касается «упреждающего -пробуждения -». т.е.он контролирует, когда задача, разбуженная событием, может немедленно -прервать выполнение текущего процесса. Слайды 2011 года также показали разницу в производительности для этого параметра.
См. также «Отключение WAKEUP _PREEMPT» в этом справочнике IBM за 2010 год , в котором говорится, что «для некоторых рабочих нагрузок» эта функция по умолчанию -«может стоить несколько процентов загрузки ЦП». ".
У SUSE Linux есть документация, в которой предлагается установить для этого параметра значение, превышающее половину sched_latency_ns
, чтобы эффективно отключить пробуждение -до предварительного -срабатывания, и тогда «задачи с коротким рабочим циклом не смогут эффективно конкурировать с процессором-свиньем». ".
Документ SUSE также предлагает несколько более подробных описаний других настроек. Однако вам обязательно следует проверить текущие значения по умолчанию в ваших собственных системах. Например, значения по умолчанию в моей системе немного отличаются от того, что написано в документе SUSE.
https://www.suse.com/documentation/opensuse121/book_tuning/data/sec_tuning_taskscheduler_cfs.html
Если вы поэкспериментируете с любой из этих переменных планирования, я думаю, вы также должны знать, что все три масштабируются (умножаются )на 1+log _2 числа процессоров. Это масштабирование можно отключить с помощью kernel.sched_tunable_scaling
. Я мог что-то упустить, но это кажется удивительным, например. если вы рассматриваете скорость отклика серверов, предоставляющих интерактивные приложения и работающих с полной или почти полной нагрузкой, и как эта скорость будет меняться в зависимости от количества процессоров на сервер.
Я также наткнулся на предложение 2013 года относительно нескольких других параметров, которые могут значительно увеличить пропускную способность, если ваша рабочая нагрузка включает большое количество потоков. (Или, возможно, более точно, он -увеличивает пропускную способность, которую они получили на ядрах до -CFS ).
CONFIG_HZ
Я думаю, вам не нужно беспокоиться о том, что установлено CONFIG_HZ
. Насколько я понимаю, это не относится к текущим ядрам, если у вас есть разумное оборудование таймера. См. также коммит 8f4d37ec073c, «sched :высокий -тик вытеснения разрешения» , найденный в этом комментарии в ветке об изменении:https://lwn.net/Articles/549754/.
(Если вы посмотрите на коммит, я бы не стал беспокоиться, что SCHED_HRTICK
зависит от X86
. Похоже, что это требование было снято в более позднем коммите ).
После долгих мучений у меня есть рабочее решение.
Начиная с Fedora WIKI OpenVPN в качестве базового уровня, я обнаружил ряд ошибок и не совсем правильных решений.
Изменение их указаний намои особенностиприводит к:
INSTALL "easy-rsa"
находится в /usr/share/easy -rsa/3.0.8/easyrsa ***НЕ /etc/openvpn/easy -rsa
cd /usr/share/easy-rsa/3.0.8
sudo./easyrsa init-pki
инициализация -pki завершена; теперь вы можете создать ЦС или запросы.
Ваш только что созданный каталог PKI: :/usr/share/easy -rsa/3.0.8/pki
sudo./easyrsa build-ca
***Использовать значения по умолчанию, кроме пароля
Ваш новый файл сертификата ЦС для публикации находится по адресу :/usr/share/easy -rsa/3.0.8/pki/ca.crt
sudo./easyrsa build-client-full {Client-1}
(***Истекает через 825 дней***)
###Начните здесь для защищенных паролем клиентов, не использующих сертификат###
sudo cp [pia]/ca.rsa.4096.crt /etc/openvpn/.
sudo cp [pia]/crl.rsa.4096.pem /etc/openvpn/.
sudo cp [pia]/openvpn-strong-nextgen/{any}.ovpn /etc/openvpn/client/pia_udp.conf
sudo gedit /etc/openvpn/client/pia_udp.conf
Удалить строки :«remote {bahamas}.privacy.network 1197 » и «proto udp ». Это делается для того, чтобы сделать конфигурацию универсальной .
sudo chgrp -R openvpn /etc/openvpn/client
В этот момент я выбрал графический интерфейс:
Повторите это для каждого VPN-подключения.
Выберите + , чтобы добавить VPN
Выберите OpenVPN
ИмяНью-Джерси
ШлюзСША -newjersey.privacy.network :1197 :udp
ТипПароль
Имя пользователя{имя пользователя PIA}
Пароль{Пароль PIA}
Сертификат ЦС /etc/openvpn/pia -ca.rsa.4096.crt
ПРИМЕЧАНИЕ. :Разрешить разрешения!
Многочисленные проблемы с разрешениями! Следите за (хвостом -f /var/log/messages )при запуске GUI.
Графический интерфейс Network работает. Нет утечек DNS .
У меня также есть ручной Kill Switch , который хорошо работает. Он использует ufw(простой брандмауэр ), который необходимо установить. Сценарий необходимо отредактировать, заменив все /usr/bin/ufw на /usr/sbin/ufw .
killswitch -e для включения после установления VPN. Завершение или иное прерывание VPN-подключения приведет к тому, что соединения вообще не будут установлены, пока killswitch -d не отключит kill switch и не установится нормальное повторное подключение.
Мне пока не удалось интегрировать переключатель уничтожения в клиент OpenVPN, чтобы сделать его автоматическим.
Оглядываясь назад, я, вероятно, не нуждался в клиентском сертификате.