Что serverperfmode = 1 на самом деле делает в macOS?

19

Включение описано здесь, но подробностей нет.

Есть смутное описание:

Режим Performance меняет системные параметры вашего Mac. Эти изменения более эффективно используют ваше оборудование для требовательных серверных приложений.

Что на самом деле меняется внутри системы / ядра?

Кейр Томас
источник

Ответы:

11

Включение режима производительности сервера существенно увеличивает некоторые параметры ядра / сети, связанные с максимальным числом возможных / разрешенных процессов и соединений, и изменяет некоторые настройки памяти / таймера:

...
kern.maxvnodes: 66560 > 300000
kern.maxproc: 1064 > 5000
...
kern.maxfilesperproc: 10240 > 150000
kern.maxprocperuid: 709 > 3750
kern.ipc.maxsockbuf: 4194304 > 8388608
...
kern.ipc.somaxconn: 128 > 1024
...
kern.ipc.nmbclusters: 32768 > 65536
...
kern.ipc.sbmb_cnt_peak: 1120 > 1170
...
kern.ipc.njcl: 10920 > 21840
...
kern.timer.longterm.qlen: 100 > 0
kern.timer.longterm.threshold: 1000 > 0
...
net.inet.ip.maxfragpackets: 1024 > 2048
...
net.inet.tcp.tcbhashsize: 4096 > 8192
...
net.inet.tcp.fastopen_backlog: 10 > 200
...
net.inet6.ip6.maxfragpackets: 1024 > 2048
...
net.inet6.ip6.maxfrags: 2048 > 4096
#and some very special vm page-outs/compressor and and memory/cache settings

Цель состоит в том, чтобы позволить большему количеству открытых файлов (особенно необходимых для веб-серверов) и подключений одновременно обслуживать большее количество клиентов и быстрее отбрасывать потоки одного сервера из памяти / виртуальной памяти (если я правильно интерпретирую определенные модификации).


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

Кроме того, эти ограничения в основном предназначены для предотвращения сбоя сервера плохим программным обеспечением за счет исчерпания ограниченных ресурсов, таких как каналы сигнализации межпроцессного взаимодействия (ipc). В системе, где работает один пользователь, вы хотите остановить запущенный процесс раньше, чем если бы десятки процессов выполнялись для десятков пользователей. «Производительность» можно рассматривать как повышение некоторых жестких ограничений, а не «показывать один файл или одну веб-страницу быстрее».

klanomath
источник
Поскольку о более чем 1100 конкретных элементах сообщается, sysctl -aэто очень хорошее резюме того, что вы могли бы посмотреть в первую очередь, если вы новичок в настройке сервера или изменениях параметров ядра. Я добавлю некоторое «мнение» к ответу на случай, если это поможет другим. Пожалуйста, верните мои правки, если высказанные мнения не являются вашими.
bmike
Это работает на MacBook Pro, а?
Тадей
1
@JedatKinports Это также работает для MacBooks, да
klanomath
И что это за настройки "#very special"? Далее: я думаю, что некоторые несистемные настройки также изменены. Разрешения ужесточены; другие «вещи» одинаково отличаются в старых версиях автономного OS X Server?
LangLangC