From owner-freebsd-questions@FreeBSD.ORG Wed Apr 25 17:44:20 2012 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B937106567D for ; Wed, 25 Apr 2012 17:44:20 +0000 (UTC) (envelope-from cswiger@mac.com) Received: from nk11p00mm-asmtp001.mac.com (nk11p00mm-asmtp001.mac.com [17.158.161.0]) by mx1.freebsd.org (Postfix) with ESMTP id 66FA48FC0A for ; Wed, 25 Apr 2012 17:44:20 +0000 (UTC) MIME-version: 1.0 Content-type: multipart/mixed; boundary="Boundary_(ID_6dVzY0xqeRbHMRijyOhwCQ)" Received: from cswiger1.apple.com (unknown [17.209.4.71]) by nk11p00mm-asmtp001.mac.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPSA id <0M31004CIQLEL450@nk11p00mm-asmtp001.mac.com> for freebsd-questions@freebsd.org; Wed, 25 Apr 2012 17:44:03 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.6.7580,1.0.260,0.0.0000 definitions=2012-04-25_05:2012-04-25, 2012-04-25, 1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 ipscore=0 suspectscore=0 phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=6.0.2-1012030000 definitions=main-1204250165 From: Chuck Swiger In-reply-to: Date: Wed, 25 Apr 2012 10:44:02 -0700 Message-id: <2FCC4ECF-DAC2-4701-B392-B0415528A4C7@mac.com> References: To: jb X-Mailer: Apple Mail (2.1084) Cc: freebsd-questions@freebsd.org Subject: Re: FreeBSD vice OS X memory management X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Apr 2012 17:44:20 -0000 --Boundary_(ID_6dVzY0xqeRbHMRijyOhwCQ) Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT On Apr 25, 2012, at 5:31 AM, jb wrote: > does OS X kernel share any code with FreeBSD kernel's memory management subsystem ? The simple answer is no. A more complex answer: % grep -ri freebsd xnu-1699.24.23 | wc -l 520 % grep -ril freebsd xnu-1699.24.23 | sort | uniq --Boundary_(ID_6dVzY0xqeRbHMRijyOhwCQ) Content-type: text/plain; name=xnu_1699_FreeBSD_list.txt Content-transfer-encoding: 7BIT Content-disposition: attachment; filename=xnu_1699_FreeBSD_list.txt % grep -ril freebsd xnu-1699.24.23 | sort | uniq ~/Downloads xnu-1699.24.23/EXTERNAL_HEADERS/stdbool.h xnu-1699.24.23/bsd/bsm/audit.h xnu-1699.24.23/bsd/bsm/audit_domain.h xnu-1699.24.23/bsd/bsm/audit_errno.h xnu-1699.24.23/bsd/bsm/audit_fcntl.h xnu-1699.24.23/bsd/bsm/audit_kevents.h xnu-1699.24.23/bsd/crypto/aes/gen/aesopt.h xnu-1699.24.23/bsd/crypto/blowfish/bf_enc.c xnu-1699.24.23/bsd/crypto/blowfish/bf_locl.h xnu-1699.24.23/bsd/crypto/blowfish/bf_pi.h xnu-1699.24.23/bsd/crypto/blowfish/bf_skey.c xnu-1699.24.23/bsd/crypto/blowfish/blowfish.h xnu-1699.24.23/bsd/crypto/cast128/cast128.c xnu-1699.24.23/bsd/crypto/cast128/cast128.h xnu-1699.24.23/bsd/crypto/cast128/cast128_subkey.h xnu-1699.24.23/bsd/crypto/des/des.h xnu-1699.24.23/bsd/crypto/des/des_ecb.c xnu-1699.24.23/bsd/crypto/des/des_enc.c xnu-1699.24.23/bsd/crypto/des/des_locl.h xnu-1699.24.23/bsd/crypto/des/des_setkey.c xnu-1699.24.23/bsd/crypto/des/podd.h xnu-1699.24.23/bsd/crypto/des/sk.h xnu-1699.24.23/bsd/crypto/des/spr.h xnu-1699.24.23/bsd/crypto/rc4/rc4.c xnu-1699.24.23/bsd/crypto/rc4/rc4.h xnu-1699.24.23/bsd/crypto/sha2/sha2.c xnu-1699.24.23/bsd/crypto/sha2/sha2.h xnu-1699.24.23/bsd/dev/dtrace/blist.c xnu-1699.24.23/bsd/dev/dtrace/blist.h xnu-1699.24.23/bsd/dev/memdev.c xnu-1699.24.23/bsd/dev/vn/vn.c xnu-1699.24.23/bsd/hfs/hfs_lookup.c xnu-1699.24.23/bsd/hfs/hfscommon/headers/RedBlackTree.h xnu-1699.24.23/bsd/kern/kern_event.c xnu-1699.24.23/bsd/kern/kern_mib.c xnu-1699.24.23/bsd/kern/kern_newsysctl.c xnu-1699.24.23/bsd/kern/kern_resource.c xnu-1699.24.23/bsd/kern/makesyscalls.sh xnu-1699.24.23/bsd/kern/sys_pipe.c xnu-1699.24.23/bsd/kern/syscalls.master xnu-1699.24.23/bsd/kern/tty.c xnu-1699.24.23/bsd/kern/uipc_socket.c xnu-1699.24.23/bsd/kern/uipc_socket2.c xnu-1699.24.23/bsd/libkern/strsep.c xnu-1699.24.23/bsd/man/man2/aio_cancel.2 xnu-1699.24.23/bsd/man/man2/aio_error.2 xnu-1699.24.23/bsd/man/man2/aio_read.2 xnu-1699.24.23/bsd/man/man2/aio_return.2 xnu-1699.24.23/bsd/man/man2/aio_suspend.2 xnu-1699.24.23/bsd/man/man2/aio_write.2 xnu-1699.24.23/bsd/man/man2/audit.2 xnu-1699.24.23/bsd/man/man2/auditctl.2 xnu-1699.24.23/bsd/man/man2/auditon.2 xnu-1699.24.23/bsd/man/man2/getaudit.2 xnu-1699.24.23/bsd/man/man2/getauid.2 xnu-1699.24.23/bsd/man/man2/getdtablesize.2 xnu-1699.24.23/bsd/man/man2/getlcid.2 xnu-1699.24.23/bsd/man/man2/getpgrp.2 xnu-1699.24.23/bsd/man/man2/getsid.2 xnu-1699.24.23/bsd/man/man2/i386_get_ldt.2 xnu-1699.24.23/bsd/man/man2/issetugid.2 xnu-1699.24.23/bsd/man/man2/kqueue.2 xnu-1699.24.23/bsd/man/man2/mmap.2 xnu-1699.24.23/bsd/man/man2/mprotect.2 xnu-1699.24.23/bsd/man/man2/msync.2 xnu-1699.24.23/bsd/man/man2/read.2 xnu-1699.24.23/bsd/man/man2/semctl.2 xnu-1699.24.23/bsd/man/man2/semget.2 xnu-1699.24.23/bsd/man/man2/semop.2 xnu-1699.24.23/bsd/man/man2/sendfile.2 xnu-1699.24.23/bsd/man/man2/setaudit.2 xnu-1699.24.23/bsd/man/man2/setauid.2 xnu-1699.24.23/bsd/man/man2/setlcid.2 xnu-1699.24.23/bsd/man/man2/setregid.2 xnu-1699.24.23/bsd/man/man2/setreuid.2 xnu-1699.24.23/bsd/man/man2/sigaction.2 xnu-1699.24.23/bsd/man/man2/undelete.2 xnu-1699.24.23/bsd/man/man2/utimes.2 xnu-1699.24.23/bsd/man/man2/write.2 xnu-1699.24.23/bsd/man/man3/queue.3 xnu-1699.24.23/bsd/man/man4/aio.4 xnu-1699.24.23/bsd/man/man4/audit.4 xnu-1699.24.23/bsd/man/man4/auditpipe.4 xnu-1699.24.23/bsd/man/man4/bpf.4 xnu-1699.24.23/bsd/man/man4/divert.4 xnu-1699.24.23/bsd/man/man4/dummynet.4 xnu-1699.24.23/bsd/man/man4/faith.4 xnu-1699.24.23/bsd/man/man4/gif.4 xnu-1699.24.23/bsd/man/man4/ifmib.4 xnu-1699.24.23/bsd/man/man4/inet6.4 xnu-1699.24.23/bsd/man/man4/ipfirewall.4 xnu-1699.24.23/bsd/man/man4/ipsec.4 xnu-1699.24.23/bsd/man/man4/stf.4 xnu-1699.24.23/bsd/man/man4/tty.4 xnu-1699.24.23/bsd/man/man9/copy.9 xnu-1699.24.23/bsd/man/man9/fetch.9 xnu-1699.24.23/bsd/man/man9/intro.9 xnu-1699.24.23/bsd/man/man9/store.9 xnu-1699.24.23/bsd/man/man9/style.9 xnu-1699.24.23/bsd/miscfs/devfs/README xnu-1699.24.23/bsd/miscfs/devfs/devfs.h xnu-1699.24.23/bsd/miscfs/devfs/devfs_tree.c xnu-1699.24.23/bsd/miscfs/devfs/devfs_vfsops.c xnu-1699.24.23/bsd/miscfs/devfs/devfs_vnops.c xnu-1699.24.23/bsd/miscfs/devfs/devfsdefs.h xnu-1699.24.23/bsd/net/bpf.c xnu-1699.24.23/bsd/net/bpf.h xnu-1699.24.23/bsd/net/bpf_compat.h xnu-1699.24.23/bsd/net/bpf_filter.c xnu-1699.24.23/bsd/net/bpfdesc.h xnu-1699.24.23/bsd/net/bridgestp.c xnu-1699.24.23/bsd/net/bridgestp.h xnu-1699.24.23/bsd/net/if.c xnu-1699.24.23/bsd/net/if.h xnu-1699.24.23/bsd/net/if_arp.h xnu-1699.24.23/bsd/net/if_bridge.c xnu-1699.24.23/bsd/net/if_bridgevar.h xnu-1699.24.23/bsd/net/if_dl.h xnu-1699.24.23/bsd/net/if_gif.c xnu-1699.24.23/bsd/net/if_loop.c xnu-1699.24.23/bsd/net/if_media.c xnu-1699.24.23/bsd/net/if_media.h xnu-1699.24.23/bsd/net/if_mib.c xnu-1699.24.23/bsd/net/if_mib.h xnu-1699.24.23/bsd/net/if_ppp.h xnu-1699.24.23/bsd/net/if_pppvar.h xnu-1699.24.23/bsd/net/if_stf.c xnu-1699.24.23/bsd/net/if_types.h xnu-1699.24.23/bsd/net/if_var.h xnu-1699.24.23/bsd/net/if_vlan.c xnu-1699.24.23/bsd/net/if_vlan_var.h xnu-1699.24.23/bsd/net/iso88025.h xnu-1699.24.23/bsd/net/net_osdep.h xnu-1699.24.23/bsd/net/radix.c xnu-1699.24.23/bsd/net/radix.h xnu-1699.24.23/bsd/net/raw_usrreq.c xnu-1699.24.23/bsd/net/route.c xnu-1699.24.23/bsd/net/route.h xnu-1699.24.23/bsd/net/rtsock.c xnu-1699.24.23/bsd/net/slip.h xnu-1699.24.23/bsd/netat/at_proto.c xnu-1699.24.23/bsd/netinet/icmp_var.h xnu-1699.24.23/bsd/netinet/if_ether.h xnu-1699.24.23/bsd/netinet/igmp.h xnu-1699.24.23/bsd/netinet/in.c xnu-1699.24.23/bsd/netinet/in.h xnu-1699.24.23/bsd/netinet/in_pcb.c xnu-1699.24.23/bsd/netinet/in_pcb.h xnu-1699.24.23/bsd/netinet/in_rmx.c xnu-1699.24.23/bsd/netinet/in_systm.h xnu-1699.24.23/bsd/netinet/in_var.h xnu-1699.24.23/bsd/netinet/ip.h xnu-1699.24.23/bsd/netinet/ip_compat.h xnu-1699.24.23/bsd/netinet/ip_divert.c xnu-1699.24.23/bsd/netinet/ip_divert.h xnu-1699.24.23/bsd/netinet/ip_dummynet.c xnu-1699.24.23/bsd/netinet/ip_dummynet.h xnu-1699.24.23/bsd/netinet/ip_encap.c xnu-1699.24.23/bsd/netinet/ip_fw2.c xnu-1699.24.23/bsd/netinet/ip_fw2.h xnu-1699.24.23/bsd/netinet/ip_icmp.h xnu-1699.24.23/bsd/netinet/ip_id.c xnu-1699.24.23/bsd/netinet/ip_input.c xnu-1699.24.23/bsd/netinet/ip_mroute.c xnu-1699.24.23/bsd/netinet/ip_output.c xnu-1699.24.23/bsd/netinet/tcp.h xnu-1699.24.23/bsd/netinet/tcp_cc.h xnu-1699.24.23/bsd/netinet/tcp_debug.c xnu-1699.24.23/bsd/netinet/tcp_debug.h xnu-1699.24.23/bsd/netinet/tcp_fsm.h xnu-1699.24.23/bsd/netinet/tcp_input.c xnu-1699.24.23/bsd/netinet/tcp_output.c xnu-1699.24.23/bsd/netinet/tcp_seq.h xnu-1699.24.23/bsd/netinet/tcp_subr.c xnu-1699.24.23/bsd/netinet/tcp_timer.c xnu-1699.24.23/bsd/netinet/tcp_timer.h xnu-1699.24.23/bsd/netinet/tcp_usrreq.c xnu-1699.24.23/bsd/netinet/tcp_var.h xnu-1699.24.23/bsd/netinet/tcpip.h xnu-1699.24.23/bsd/netinet/udp_usrreq.c xnu-1699.24.23/bsd/netinet6/ah.h xnu-1699.24.23/bsd/netinet6/ah6.h xnu-1699.24.23/bsd/netinet6/ah_core.c xnu-1699.24.23/bsd/netinet6/ah_input.c xnu-1699.24.23/bsd/netinet6/ah_output.c xnu-1699.24.23/bsd/netinet6/dest6.c xnu-1699.24.23/bsd/netinet6/esp.h xnu-1699.24.23/bsd/netinet6/esp6.h xnu-1699.24.23/bsd/netinet6/esp_core.c xnu-1699.24.23/bsd/netinet6/esp_input.c xnu-1699.24.23/bsd/netinet6/esp_output.c xnu-1699.24.23/bsd/netinet6/esp_rijndael.c xnu-1699.24.23/bsd/netinet6/esp_rijndael.h xnu-1699.24.23/bsd/netinet6/frag6.c xnu-1699.24.23/bsd/netinet6/icmp6.c xnu-1699.24.23/bsd/netinet6/icmp6.h xnu-1699.24.23/bsd/netinet6/in6.c xnu-1699.24.23/bsd/netinet6/in6.h xnu-1699.24.23/bsd/netinet6/in6_gif.c xnu-1699.24.23/bsd/netinet6/in6_gif.h xnu-1699.24.23/bsd/netinet6/in6_ifattach.c xnu-1699.24.23/bsd/netinet6/in6_proto.c xnu-1699.24.23/bsd/netinet6/in6_rmx.c xnu-1699.24.23/bsd/netinet6/in6_src.c xnu-1699.24.23/bsd/netinet6/in6_var.h xnu-1699.24.23/bsd/netinet6/ip6.h xnu-1699.24.23/bsd/netinet6/ip6_ecn.h xnu-1699.24.23/bsd/netinet6/ip6_forward.c xnu-1699.24.23/bsd/netinet6/ip6_fw.c xnu-1699.24.23/bsd/netinet6/ip6_input.c xnu-1699.24.23/bsd/netinet6/ip6_mroute.c xnu-1699.24.23/bsd/netinet6/ip6_mroute.h xnu-1699.24.23/bsd/netinet6/ip6_output.c xnu-1699.24.23/bsd/netinet6/ip6_var.h xnu-1699.24.23/bsd/netinet6/ip6protosw.h xnu-1699.24.23/bsd/netinet6/ipcomp.h xnu-1699.24.23/bsd/netinet6/ipcomp6.h xnu-1699.24.23/bsd/netinet6/ipcomp_core.c xnu-1699.24.23/bsd/netinet6/ipcomp_input.c xnu-1699.24.23/bsd/netinet6/ipcomp_output.c xnu-1699.24.23/bsd/netinet6/ipsec.c xnu-1699.24.23/bsd/netinet6/ipsec.h xnu-1699.24.23/bsd/netinet6/ipsec6.h xnu-1699.24.23/bsd/netinet6/mld6.h xnu-1699.24.23/bsd/netinet6/mld6_var.h xnu-1699.24.23/bsd/netinet6/nd6.c xnu-1699.24.23/bsd/netinet6/nd6.h xnu-1699.24.23/bsd/netinet6/nd6_nbr.c xnu-1699.24.23/bsd/netinet6/nd6_rtr.c xnu-1699.24.23/bsd/netinet6/pim6.h xnu-1699.24.23/bsd/netinet6/pim6_var.h xnu-1699.24.23/bsd/netinet6/raw_ip6.c xnu-1699.24.23/bsd/netinet6/raw_ip6.h xnu-1699.24.23/bsd/netinet6/route6.c xnu-1699.24.23/bsd/netinet6/scope6.c xnu-1699.24.23/bsd/netinet6/scope6_var.h xnu-1699.24.23/bsd/netinet6/tcp6_var.h xnu-1699.24.23/bsd/netinet6/udp6_output.c xnu-1699.24.23/bsd/netinet6/udp6_usrreq.c xnu-1699.24.23/bsd/netkey/key.c xnu-1699.24.23/bsd/netkey/key_debug.c xnu-1699.24.23/bsd/netkey/keysock.c xnu-1699.24.23/bsd/nfs/nfs.h xnu-1699.24.23/bsd/nfs/nfs_bio.c xnu-1699.24.23/bsd/nfs/nfs_lock.h xnu-1699.24.23/bsd/nfs/nfs_node.c xnu-1699.24.23/bsd/nfs/nfs_serv.c xnu-1699.24.23/bsd/nfs/nfs_socket.c xnu-1699.24.23/bsd/nfs/nfs_srvcache.c xnu-1699.24.23/bsd/nfs/nfs_subs.c xnu-1699.24.23/bsd/nfs/nfs_syscalls.c xnu-1699.24.23/bsd/nfs/nfs_vfsops.c xnu-1699.24.23/bsd/nfs/nfs_vnops.c xnu-1699.24.23/bsd/nfs/nfsdiskless.h xnu-1699.24.23/bsd/nfs/nfsm_subs.h xnu-1699.24.23/bsd/nfs/nfsmount.h xnu-1699.24.23/bsd/nfs/nfsnode.h xnu-1699.24.23/bsd/nfs/nfsproto.h xnu-1699.24.23/bsd/nfs/nfsrvcache.h xnu-1699.24.23/bsd/nfs/rpcv2.h xnu-1699.24.23/bsd/nfs/xdr_subs.h xnu-1699.24.23/bsd/security/audit/audit.c xnu-1699.24.23/bsd/security/audit/audit_bsm_klib.c xnu-1699.24.23/bsd/sys/domain.h xnu-1699.24.23/bsd/sys/event.h xnu-1699.24.23/bsd/sys/eventvar.h xnu-1699.24.23/bsd/sys/linker_set.h xnu-1699.24.23/bsd/sys/lockf.h xnu-1699.24.23/bsd/sys/mbuf.h xnu-1699.24.23/bsd/sys/pipe.h xnu-1699.24.23/bsd/sys/poll.h xnu-1699.24.23/bsd/sys/priv.h xnu-1699.24.23/bsd/sys/protosw.h xnu-1699.24.23/bsd/sys/queue.h xnu-1699.24.23/bsd/sys/sbuf.h xnu-1699.24.23/bsd/sys/socket.h xnu-1699.24.23/bsd/sys/socketvar.h xnu-1699.24.23/bsd/sys/stat.h xnu-1699.24.23/bsd/sys/syslog.h xnu-1699.24.23/bsd/sys/time.h xnu-1699.24.23/bsd/sys/vnioctl.h xnu-1699.24.23/bsd/vfs/vfs_cache.c xnu-1699.24.23/security/_label.h xnu-1699.24.23/security/conf/copyright.nai xnu-1699.24.23/security/mac.h xnu-1699.24.23/security/mac_audit.c xnu-1699.24.23/security/mac_base.c xnu-1699.24.23/security/mac_file.c xnu-1699.24.23/security/mac_framework.h xnu-1699.24.23/security/mac_inet.c xnu-1699.24.23/security/mac_internal.h xnu-1699.24.23/security/mac_label.c xnu-1699.24.23/security/mac_net.c xnu-1699.24.23/security/mac_pipe.c xnu-1699.24.23/security/mac_policy.h xnu-1699.24.23/security/mac_port.c xnu-1699.24.23/security/mac_posix_sem.c xnu-1699.24.23/security/mac_posix_shm.c xnu-1699.24.23/security/mac_process.c xnu-1699.24.23/security/mac_socket.c xnu-1699.24.23/security/mac_system.c xnu-1699.24.23/security/mac_sysv_msg.c xnu-1699.24.23/security/mac_sysv_sem.c xnu-1699.24.23/security/mac_sysv_shm.c xnu-1699.24.23/security/mac_task.c xnu-1699.24.23/security/mac_vfs.c --Boundary_(ID_6dVzY0xqeRbHMRijyOhwCQ) Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT > Something is deeply broken in OS X memory management > http://workstuff.tumblr.com/post/20464780085/something-is-deeply-broken-in-os-x- > memory-management Hmm. Certainly it is true that things like mds and the Safari Web Content are rather memory hungry, and having mds generating initial indexes or doing a big update will slow down Time Machine due to disk I/O contention. Flushing the inactive pages and blowing away disk caching can help performance of a foreground task at the expense of background tasks, but tuning for overall throughput and avoiding deadlock / livelock is probably a wiser design decision than concentrating purely on foreground tasks. Killing off the VM pager is extreme: most folks prefer a program to continue to run rather than crash, although the latter behavior is also a sign that the program itself is not well-written. > One of the problems that caught my eyes was inactive memory reclamation. > I remember some time ago there was a thread here with similar topic. > http://lists.freebsd.org/pipermail/freebsd-questions/2012-March/239121.html Yes. Understanding VM takes a fair amount of background knowledge and making useful comparisons (ie, testable, repeatable, etc) involves gathering data. Filing good bug reports with data and reproducible test cases helps problems get resolved. Regards, -- -Chuck --Boundary_(ID_6dVzY0xqeRbHMRijyOhwCQ)--