X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..4bd07ac2140668789aa3ee8ec4dde4a3e0a3bba5:/bsd/dev/unix_startup.c diff --git a/bsd/dev/unix_startup.c b/bsd/dev/unix_startup.c index 0f36920f0..25c3610d0 100644 --- a/bsd/dev/unix_startup.c +++ b/bsd/dev/unix_startup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2010 Apple Inc. All rights reserved. + * Copyright (c) 2000-2014 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -52,6 +52,7 @@ #include #include #include +#include extern uint32_t kern_maxvnodes; extern vm_map_t mb_map; @@ -62,7 +63,6 @@ extern uint32_t tcp_recvspace; #endif void bsd_bufferinit(void); -extern void md_prepare_for_shutdown(int, int, char *); unsigned int bsd_mbuf_cluster_reserve(boolean_t *); void bsd_scale_setup(int); @@ -140,7 +140,7 @@ bsd_startupearly(void) &firstaddr, size, FALSE, - VM_FLAGS_ANYWHERE, + VM_FLAGS_ANYWHERE | VM_MAKE_TAG(VM_KERN_MEMORY_FILE), &bufferhdr_map); if (ret != KERN_SUCCESS) @@ -150,7 +150,8 @@ bsd_startupearly(void) &firstaddr, size, 0, - KMA_HERE | KMA_KOBJECT); + KMA_HERE | KMA_KOBJECT, + VM_KERN_MEMORY_FILE); if (ret != KERN_SUCCESS) panic("Failed to allocate bufferhdr_map"); @@ -215,10 +216,10 @@ bsd_bufferinit(void) #if SOCKETS ret = kmem_suballoc(kernel_map, - (vm_offset_t *) & mbutl, + (vm_offset_t *) &mbutl, (vm_size_t) (nmbclusters * MCLBYTES), FALSE, - VM_FLAGS_ANYWHERE, + VM_FLAGS_ANYWHERE | VM_MAKE_TAG(VM_KERN_MEMORY_MBUF), &mb_map); if (ret != KERN_SUCCESS) @@ -291,8 +292,8 @@ bsd_mbuf_cluster_reserve(boolean_t *overridden) nmbclusters = MAX_NCL; } - /* Round it down to nearest multiple of 4KB clusters */ - nmbclusters = P2ROUNDDOWN(nmbclusters, NCLPBG); + /* Round it down to nearest multiple of PAGE_SIZE */ + nmbclusters = P2ROUNDDOWN(nmbclusters, NCLPG); } mbuf_poolsz = nmbclusters << MCLSHIFT; done: @@ -327,16 +328,20 @@ bsd_scale_setup(int scale) maxfilesperproc = maxfiles/2; desiredvnodes = maxfiles; vnodes_sized = 1; + tcp_tfo_backlog = 100 * scale; if (scale > 4) { - /* clip them at 32G level */ + /* clip somaxconn at 32G level */ somaxconn = 2048; - /* 64G or more the hash size is 32k */ + /* + * For scale > 4 (> 32G), clip + * tcp_tcbhashsize to 32K + */ + tcp_tcbhashsize = 32 *1024; + if (scale > 7) { /* clip at 64G level */ - tcp_tcbhashsize = 16 *1024; max_cached_sock_count = 165000; } else { - tcp_tcbhashsize = 32 *1024; max_cached_sock_count = 60000 + ((scale-1) * 15000); } } else {