19

Turning it on is described here but there are no details.

There is a vague description:

Performance mode changes the system parameters of your Mac. These changes take better advantage of your hardware for demanding server applications.

What is actually changing inside the system/kernel?

11

Turning on Server Performance Mode essentially increases some kernel/net parameters related to the max number of possible/allowed processes and connections and modifies some memory/timer settings:

...
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

The goal is to allow more open files (especially needed for web servers) and connections to serve more clients at the same time and discarding single server threads faster from memory/virtual memory (if I interpret certain modifications correctly).


In the past, Apple released a different OS and now that server loads on top of the consumer OS some basic tuning can help the operating system run processes for 25 users that connect to a server instead of being tuned for one person using the OS. These tunings are just a starting point - anyone that wants their server to perform under high load needs to customize and monitor things at a far more detailed level than having performance mode on or off.

Also, these limits are mostly for preventing bad software from bringing down a server by exhausting limited resources like inter process communications signaling channels (ipc). On a system where one user is running, you want to halt a runaway process sooner than if there are dozens of processes running for dozens of users. The "performance" can be seen as raising some hard limits as opposed to "serve one file or one web page faster".

  • Since there are over 1100 specific items reported by sysctl -a this is a very nice summary of the things you might watch first if you are new to server tuning or kernel parameter modifications. I'll add some "opinion" to the answer in case that helps others. Please revert my edits if the opinions expressed aren't yours. – bmike Dec 15 '16 at 13:53
  • Does this work on a macbook pro as well? – Tadej Jun 20 '17 at 19:18
  • 1
    @JedatKinports This also works for MacBooks, yes – klanomath Jun 20 '17 at 21:23
  • And what are these "#very special" settings? Further: I think there are some non-sysctl settings altered also. Permissions tightened; other 'things' equally different in older versions of standalone OS X Server? – LangLangC Sep 1 '17 at 9:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .