PDA

View Full Version : Memory Management in Knoppix?



thaumielx72
06-29-2005, 01:21 AM
Knoppix is an interesting idea for people looking to learn Linux without abandoning Windows first.

But I do have one small question:
Is there no way to change the ramdisk to a smaller size so you can free up more memory for applications? If your not going to load the whole OS into RAM then it seems a little excesive to have an 800 meg Ramdisk that is only going to get maybe 5% used at most.

Sorry if its a dumb question.

UnderScore
06-29-2005, 02:11 AM
This is all for Knoppix 3.8 Cebit Edition which is 4 months old but it should be roughly the same for Knoppix 3.9 & 4.0. Knoppix loads the kernel and mini root partition from /KNOPPIX-CD-ROOT/boot/isolinux. The kernel loaded is linux and the mini root is minirt.gz. You can view the mini root by copying it to another location, unziping it, and loop mounting it.
cd $HOME
cp /KNOPPIX-CD-ROOT/boot/isolinux/minirt.gz ./
mkdir foobar
gunzip minirt.gz
sudo mount -t ext2 -o loop,ro minirt ./foobar
Inside the minirt you will find a executable script named linuxrc. This linuxrc script is init script for Knoppix.

The entire linuxrc script for Knoppix 3.8 Cebit Edition is posted at my website at http://virtualacuity.com/james/knoppix-unionfs/linuxrc-3.8.html

11 # hardcoded configurable options
12 # Default maximum size of dynamic ramdisk in kilobytes
13 RAMSIZE=1000000


612 # New in Kernel 2.4.x: tmpfs with variable ramdisk size.
613 # We check for available memory anyways and limit the ramdisks
614 # to a reasonable size.
615 FOUNDMEM="$(awk '/MemTotal/{print $2}' /proc/meminfo)"
616 TOTALMEM="$(awk 'BEGIN{m=0};/MemFree|Cached/{m+=$2};END{print m}' /proc/meminfo)"
617
618 # Be verbose
619 echo "${CRE}${BLUE}Total memory found: ${YELLOW}${FOUNDMEM}${BLUE} kB${NORMAL}"
620
621 # Now we need to use a little intuition for finding a ramdisk size
622 # that keeps us from running out of space, but still doesn't crash the
623 # machine due to lack of Ram
624
625 # Minimum size of additional ram partitions
626 MINSIZE=20000
627 # At least this much memory minus 30% should remain when home and var are full.
628 MINLEFT=16000
629 # Maximum ramdisk size
630 MAXSIZE="$(expr $TOTALMEM - $MINLEFT)"
631 # Default ramdisk size for ramdisk
632 RAMSIZE="$(expr $TOTALMEM / 5)"
633
634 # Create additional dynamic ramdisk.
635 test -z "$RAMSIZE" -o "$RAMSIZE" -lt "$MINSIZE" && RAMSIZE="$MINSIZE"
636 mkdir -p /ramdisk
637 # tmpfs/varsize version, can use swap
638 RAMSIZE=$(expr $RAMSIZE \* 4)
639 echo -n "${CRE}${BLUE}Creating ${YELLOW}/ramdisk${BLUE} (dynamic size=${RAMSIZE}k) on ${MAGENTA}shared memory${BLUE}...${NORMAL}"
640 # We need /bin/mount here for the -o size= option
641 /bin/mount -t tmpfs -o "size=${RAMSIZE}k" /ramdisk /ramdisk

Those lines detect the system's total RAM, calculate the ramdisk size, & then create the ramdisk. This calculation is not user configurable but in theory it should be possible to create a boot time cheat code for ramdisk size that is then detected & used in this script. The logic of it would have to do bounds checking to make sure the user is not setting the ramdisk too small or too large.

I hope this helps.
James

Markus
06-29-2005, 04:20 PM
Try a kernel parameter. From /usr/src/linux/Documentation/ramdisk.txt:
ramdisk_size=N
==============
This parameter tells the RAM disk driver to set up RAM disks of N k size.

Don't know if it works with knoppix though.

thaumielx72
06-30-2005, 03:15 AM
Thanks to both Underscore and Markus for their responses. Learned a lot more about Linux and Knoppix - course it turned out that wasn't my problem after all. I was looking in the wrong direction. But now that i've got my feet wet I look foreward to much more use of Knoppix from now on

(I was trying to use Knoppix to run the SETI@home and Einstein@home programs after reading about it on their website. I got it to run on my first try [sheer stupid luck as it turned out] but could not duplicate this success after changing the screen resolution to 1024X768 and rebooting. I assumed that they were using way too much RAM with the bigger [and much more readable] screen. It turns out I didn't understand the directory [folder?] system under Linux as that turned out to be my problem. The RamDisk is dynamic anyway so it shouldn't really take up that much room if not needed. I think.

I have noticed the programs run much slower than they did under Windows XP. That combined with the fact the the same two processes are using considerably less RAM under Knoppix leads me to believe I haven't finished my study of Memory Management under Linux yet..)

bwcbwc
11-24-2005, 05:23 PM
I'm looking to free up memory because vegastrike runs like a snail (pause up to 15 seconds to respond to mouse movement or click) under Knoppix (why bother to include it?). With only 200 MB out of 1 GB RAM available as memory, I'm assuming that low memory availability is the cause (even though I have a 500 MB USB swap file). Response is much faster in the windows version of vegastrike (but it crashes very quickly after startup).

I'm running the Knoppix 4.02 DVD (no HD install). The ramdisk_size boot option doesn't affect the size of the ramdisk created in the linuxrc script, so that didn't help. Based on the discussion of the linuxrc script, this looks like a messy remastering job.

I'm assuming there's no way to umount and mount the ramdisk under a new size while the system is running. It certainly sounds like an invitation to crash unionfs and the OS if we do that.