Date: Wed, 14 Mar 2012 20:07:53 -0700 From: Ted Mittelstaedt <tedm@mittelstaedt.us> To: freebsd-emulation@freebsd.org Subject: Re: Fwd: Kernel memory usage Message-ID: <4F615D09.8030009@mittelstaedt.us> In-Reply-To: <CA%2BWntOv%2B%2BtkAms%2BOQtW-bH=3f7VnUhtA7SA1c8dQYwZho5aX4g@mail.gmail.com> References: <4F5D48E6.9010802@herveybayaustralia.com.au> <CA%2BWntOt=4P=%2BmdAX3G1s5jQHxt9HFSN6c%2BxTjo9cQAsaSgdJqw@mail.gmail.com> <4F5F2CC5.80608@herveybayaustralia.com.au> <CA%2BWntOv%2B%2BtkAms%2BOQtW-bH=3f7VnUhtA7SA1c8dQYwZho5aX4g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
What do you regard as a "low memory" machine? Ted On 3/13/2012 8:30 AM, Super Bisquit wrote: > ---------- Forwarded message ---------- > From: Da Rock<9Phackers@herveybayaustralia.com.au> > Date: Tue, Mar 13, 2012 at 7:17 AM > Subject: Re: Kernel memory usage > To: freebsd-hackers@freebsd.org > > > On 03/13/12 05:40, Super Bisquit wrote: > >> CPU architecture and model have a lot to do with performance. >> You will also get different results if you used qemu in place of >> VirtualBox. Qemu allows you to choose different emulated >> architectures, CPUs, and machine bases. What's the downside? You have >> to use the command line. >> Install qemu and run a series of virtual machines. >> Embedded devices also include Power(PC), ARMv?, Coldfire, et al; >> you're only dealing with i386 and/or the 64 bit extension (AMD64). >> CISC- which does not contain any hardware modification to be a RISC >> replacement- runs fewer instructions than RISC due to the limited >> number of registers. Take this into consideration every time a >> program runs. >> Everything else also matters on real and emulated systems: >> Is it ide, scsi, sdd, flashdevice for the hard drive? >> What type of RAM? >> Dedicated or shared disk? >> > I'm a little confused by the response, I was interested if someone knew > what determines the size of kernel in memory (or wired); I only considered > the embedded list because they have a greater interest in the memory size > working with so little. > > It is academic as I'm trying to understand the kernel internals, as well as > understand what works with low memory so I can tune accordingly. I > understand the different CPU instruction sets (roughly), although I would > be interested as to the size of the kernel in each. > > What my question was about was the wired memory size and what makes it grow > (to put it super simply :) ). I know some growth would be expected, but > this seems obese; how would I find out how much memory a process structure > takes? Or else what am I missing? > > That said I'll have a crack at what you suggest as that follows a whole new > interesting tangent :) I have used qemu before, but found VBox a bit more > responsive (and, I will admit, easier...) > > >> On 3/11/12, Da Rock<9Phackers@**herveybayaustralia.com.au<9Phackers@herveybayaustralia.com.au>> >> wrote: >> >>> I may be required to move this to embedded, but I am only looking for >>> generalisation. >>> >>> Recently a thread came up on questions regarding memory usage, and a >>> post was made regarding wired memory being nearly all kernel- something >>> I was ready to dispute, but then I thought I'd better make sure. >>> >>> So I tested a few theories first off: >>> >>> 1. Comparing memory usage across machines >>> >>> I checked servers and desktops as well as vm's for memory usage, and I >>> found some interesting results. On a firewall with no apps installed >>> only 35M wired is used, on a desktop up to 700M~ can be used. Even as a >>> dedicated server with a few services used it remains around 35M. >>> >>> Surely this means that the wired memory used is not just kernel? But I >>> held off my assumptions as it was still plausible that the structures >>> used by the kernel could balloon that far, too. >>> >>> 2. Stripped down, lean mean, kernel machine >>> >>> I then (using a vm I was building a kernel for anyway) stripped down a >>> kernel in a VBox VM using le drivers for network to see what could be >>> achieved. This is my kernel conf: >>> >>> include GENERIC >>> ident VPN >>> options IPSEC >>> options IPSEC_DEBUG >>> options IPSEC_NAT_T >>> device crypto >>> device enc >>> >>> # minimise kernel >>> nooptions UFS_GJOURNAL >>> nooptions MD_ROOT >>> nooptions NFSCL >>> nooptions NFSD >>> nooptions NFSLOCKD >>> nooptions NFS_ROOT >>> nooptions MSDOSFS >>> nooptions CD9660 >>> nooptions PROCFS >>> nooptions PSEUDOFS >>> nodevice fdc >>> nodevice mvs >>> nodevice siis >>> nodevice ahc >>> nodevice ahd >>> nodevice esp >>> nodevice hptiop >>> nodevice isp >>> nodevice mpt >>> nodevice mps >>> nodevice sym >>> nodevice trm >>> nodevice adv >>> nodevice adw >>> nodevice aic >>> nodevice bt >>> nodevice ses >>> nodevice amr >>> nodevice arcmsr >>> nodevice ciss >>> nodevice dpt >>> nodevice hptmv >>> nodevice hptrr >>> nodevice irr >>> nodevice ips >>> nodevice mly >>> nodevice twa >>> nodevice aac >>> nodevice aacp >>> nodevice ida >>> nodevice mfi >>> nodevice mlx >>> nodevice twe >>> nodevice tws >>> nodevice splash >>> nodevice cbb >>> nodevice pccard >>> nodevice cardbus >>> nodevice uart >>> nodevice ppc >>> nodevice ppbus >>> nodevice lpt >>> nodevice plip >>> nodevice ppi >>> nodevice puc >>> nodevice bxe >>> nodevice de >>> nodevice em >>> nodevice igb >>> nodevice ixgbe >>> nodevice ti >>> nodevice txp >>> nodevice vx >>> nodevice miibus >>> nodevice ae >>> nodevice age >>> nodevice alc >>> nodevice ale >>> nodevice bce >>> nodevice bfe >>> nodevice bge >>> nodevice dc >>> nodevice et >>> nodevice fxp >>> nodevice jme >>> nodevice lge >>> nodevice msk >>> nodevice nfe >>> nodevice nge >>> nodevice pcn >>> nodevice re >>> nodevice rl >>> nodevice sf >>> nodevice sge >>> nodevice sis >>> nodevice sk >>> nodevice ste >>> nodevice stge >>> nodevice tl >>> nodevice tx >>> nodevice vge >>> nodevice vr >>> nodevice wb >>> nodevice xl >>> nodevice cs >>> nodevice ed >>> nodevice ex >>> nodevice ep >>> nodevice fe >>> nodevice sn >>> nodevice xe >>> nodevice wlan >>> nooptions IEEE80211_DEBUG >>> nooptions IEEE80211_AMPDU_AGE >>> nooptions IEEE80211_SUPPORT_MESH >>> nodevice wlan_wep >>> nodevice wlan_ccmp >>> nodevice wlan_tkip >>> nodevice wlan_amrr >>> nodevice an >>> nodevice ath >>> nodevice ath_pci >>> nodevice ath_hal >>> nooptions AH_SUPPORT_AR5416 >>> nodevice ath_rate_sample >>> nodevice ipw >>> nodevice iwi >>> nodevice iwn >>> nodevice malo >>> nodevice mwl >>> nodevice ral >>> nodevice wi >>> nodevice wpi >>> nodevice md >>> nooption USB_DEBUG >>> nodevice uhci >>> nodevice ohci >>> nodevice ehci >>> nodevice xhci >>> nodevice usb >>> nodevice uhid >>> nodevice ukbd >>> nodevice ulpt >>> nodevice umass >>> nodevice ums >>> nodevice urio >>> nodevice u3g >>> nodevice uark >>> nodevice ubsa >>> nodevice uftdi >>> nodevice uipaq >>> nodevice uplcom >>> nodevice uslcom >>> nodevice uvisor >>> nodevice uvscom >>> nodevice aue >>> nodevice axe >>> nodevice cdce >>> nodevice cue >>> nodevice kue >>> nodevice rue >>> nodevice udav >>> nodevice rum >>> nodevice run >>> nodevice uath >>> nodevice upgt >>> nodevice ural >>> nodevice urtw >>> nodevice zyd >>> #nodevice firewire >>> nodevice fwe >>> nodevice fwip >>> #nodevice dcons >>> #nodevice dcons_rom >>> nodevice sound >>> nodevice snd_es137x >>> nodevice snd_hda >>> nodevice snd_ich >>> nodevice snd_uaudio >>> nodevice snd_via8233 >>> >>> World was also rebuilt as recommended by the handbook. As you can see I >>> was rebuilding for IPSEC (for testing purposes only note). I couldn't >>> remove dcons (not sure why- missing defined references), and that pulled >>> in firewire too. >>> >>> The result was surprising: a 14M kernel became 6.3M, and when running I >>> found it only used 19M used for wired (whoopee!) as opposed to 35M. No >>> services were running per se, only the usual suspects in base: >>> >>> vpn-test# ps ax >>> PID TT STAT TIME COMMAND >>> 0 ?? DLs 0:00.11 [kernel] >>> 1 ?? ILs 0:00.01 /sbin/init -- >>> 2 ?? DL 0:00.00 [crypto] >>> 3 ?? DL 0:00.00 [crypto returns] >>> 4 ?? DL 0:00.00 [sctp_iterator] >>> 5 ?? DL 0:00.00 [xpt_thrd] >>> 6 ?? DL 0:00.10 [pagedaemon] >>> 7 ?? DL 0:00.00 [vmdaemon] >>> 8 ?? DL 0:00.01 [pagezero] >>> 9 ?? DL 0:00.30 [bufdaemon] >>> 10 ?? DL 0:00.00 [audit] >>> 11 ?? RL 589:34.00 [idle] >>> 12 ?? WL 0:38.64 [intr] >>> 13 ?? DL 0:12.21 [geom] >>> 14 ?? DL 0:03.30 [yarrow] >>> 15 ?? DL 0:04.40 [syncer] >>> 16 ?? DL 0:00.63 [vnlru] >>> 17 ?? DL 0:00.53 [softdepflush] >>> 104 ?? Is 0:00.00 adjkerntz -i >>> 582 ?? Is 0:00.00 /sbin/devd >>> 737 ?? Ss 0:00.09 /usr/sbin/syslogd -s >>> 912 ?? Ss 0:02.68 /usr/sbin/ntpd -c /etc/ntp.conf -p >>> /var/run/ntpd.pid >>> 977 ?? Is 0:00.00 /usr/sbin/sshd >>> 984 ?? Ss 0:00.81 sendmail: accepting connections (sendmail) >>> 988 ?? Is 0:00.01 sendmail: Queue runner@00:30:00 for >>> /var/spool/client >>> 994 ?? Ss 0:00.12 /usr/sbin/cron -s >>> 2061 ?? Is 0:00.03 sshd: admin [priv] (sshd) >>> 2064 ?? S 0:00.04 sshd: admin@pts/0 (sshd) >>> 1052 v0 Is 0:00.01 login [pam] (login) >>> 1060 v0 I+ 0:00.02 -csh (csh) >>> 1053 v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1 >>> 1054 v2 Is+ 0:00.00 /usr/libexec/getty Pc ttyv2 >>> 1055 v3 Is+ 0:00.00 /usr/libexec/getty Pc ttyv3 >>> 1056 v4 Is+ 0:00.00 /usr/libexec/getty Pc ttyv4 >>> 1057 v5 Is+ 0:00.00 /usr/libexec/getty Pc ttyv5 >>> 1058 v6 Is+ 0:00.00 /usr/libexec/getty Pc ttyv6 >>> 1059 v7 Is+ 0:00.00 /usr/libexec/getty Pc ttyv7 >>> 2065 0 Is 0:00.02 -csh (csh) >>> 2068 0 I 0:00.01 su >>> 2069 0 S 0:00.04 _su (csh) >>> 2414 0 R+ 0:00.00 ps ax >>> >>> After some minutes though, the usage went up to 39M. WTF? >>> >>> So I'm now thoroughly confused. Google didn't really show up any real >>> answers either. Aside from discovering the true nature of what was >>> discussed in the posts, my hypothetical theorising is for my own >>> academics as well; and I'm trying to slim down my kernels to see if I >>> can improve performance with low memory systems. >>> >>> Can process structures cause this much ballooning? I find that hard to >>> believe given not much is running here. My only other thought would be >>> pipe or network structures? Anything I'm missing? >>> >>> FWIW, my trimmed down, slim and slender, aerodynamic kernel can boot in >>> seconds as opposed to minutes. Sweet! Although compiling clang took >>> years... and gcc was built as well :/ >>> >>> Cheers >>> ______________________________**_________________ >>> freebsd-hackers@freebsd.org mailing list >>> http://lists.freebsd.org/**mailman/listinfo/freebsd-**hackers<http://lists.freebsd.org/mailman/listinfo/freebsd-hackers> >>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@** >>> freebsd.org<freebsd-hackers-unsubscribe@freebsd.org>" >>> >>> ______________________________**_________________ >> freebsd-hackers@freebsd.org mailing list >> http://lists.freebsd.org/**mailman/listinfo/freebsd-**hackers<http://lists.freebsd.org/mailman/listinfo/freebsd-hackers> >> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@** >> freebsd.org<freebsd-hackers-unsubscribe@freebsd.org>" >> > > ______________________________**_________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/**mailman/listinfo/freebsd-**hackers<http://lists.freebsd.org/mailman/listinfo/freebsd-hackers> > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > I'm fowarding this thread in the event the individual, "da Rock" will be > able to receive more help. > _______________________________________________ > freebsd-emulation@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-emulation > To unsubscribe, send any mail to "freebsd-emulation-unsubscribe@freebsd.org" > > > ----- > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2012.0.1913 / Virus Database: 2114/4871 - Release Date: 03/14/12
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F615D09.8030009>