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

% 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

> 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

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to