You know (or might know) that the System RAM's Used Space are occupied by Caches. And it can be "cleaned" by using:
Code:
sysctl -w vm.drop_caches=X
Now I wonder: Is there a command like that can also be used to "clean" the Swap RAM's Used Space?
I tried using the sysctl command via Terminal, with X ranging from 1-3, and it only affects the System RAM, not my Swap RAM...
Any ideas?
Related
This is a merged thread, from the two previous posts I created, both questions I awnserd myself. here is the awnser you really want multiple partitions for your phone
First you must run gparted from command promp on your computer, so connect your phone to your computer and run in the terminal:
Code:
adb shell
parted /dev/block/mmcblk0
print
remove any partitions
Code:
rm1
rm2
rm3
rm4
rm5
now create new partitions these partitions should be as so, for sense or 2.1, or gingerbread roms fat32 ext2 swap file is the order, for froyo I believe it is swap ext2 fat32, but I have not tried a froyo rom yet.
Code:
mkpartfs primary fat32 0 14500MB
mkpartfs primary ext2 14500MB 15500MB
mkpartfs primary linux-swap 15500MB 15900MB
now push swap.zip file from below to your phone, and flash swap.zip
now reboot
now open terminal emulator and type:
Code:
ls /dev/block/
this should print something like this:
mmcblk0p1
mmcblk0p2
mmcblk0p3
mntblock1
mntblock2
loop1
loop2
the mmcblk0p'# are the sdcard partitions
to mount the fat32 partition type:
Code:
mount -o rw -t vfat /dev/block/mmcblk0p1 /mnt/sdcard/
now use one of SwapScriptv2.1.1 thanks to cyanogen
type in terminal:
Code:
[B]swapscriptv2[/B]
Follow the prompts and you should see your new swap partition in use, by typing:
Code:
[B]free[/B]
in your terminal now if you woud like to have the swap started at boot time type
Code:
[B]bootswapv2[/B]
rd
and follow the prompts after this you should have a new 3 partitioned sdcard fat32 ext2 and swap and using and mounted on fat32 on sdcard and swap running
using the ext2 will be for either cach2cach appsor maybe linux, I have not decied yet
http://forum.cyanogenmod.com/topic/208-swap-enabledisable/
Flash from Recovery
Compatible with 2 and 3 partition layouts (ext(fat+ext+swap) and no ext(fat+swap))
http://www.mediafire...qdvxh7sos5svcvc
or
http://www.sendspace.com/file/h66oap
This script adds commands to terminal:
Code:
swapscriptv2
bootswapv2
swap-off
bootswap-off
vmtweaks
vmtweaks-boot
swapscriptv2 - you will be asked what partition layout you are using as well as swappiness, optional vm settings prompted
bootswapv2 - you will be asked what partition layout you are using as well as swappiness, and an init script will be placed for swap at boot time, optional boot time vm settings prompted
swap-off turns off active swap partition (error for parition not in use is normal)
bootswap-off removes bootswap init file.
vmtweaks allows changing settings for vfs_cache_pressure and page-cluster, some people have reported success in reducing these values.
vmtweaks-boot allows changing settings for vfs_cache_pressure and page-cluster and applying them at boot.
Let me know if there are any problems with the new script.
the following commands in the terminal
SwapScript: (v1)
Flash from Recovery
fat32+ext+swap or swap on /dev/block/mmcblk0p3
http://www.mediafire...bnc79k6pkespzbj
fat32+swap no ext or swap on /dev/block/mmcblk0p2
http://www.mediafire...b3ykdk3r21js96q
This script adds several commands to terminal:
swapon10
swapon20
swapon30
swapon40
swapon50
swapon60
swapon70
swapon80
swapon90
bootswap10
bootswap20
bootswap30
bootswap40
bootswap50
bootswap60
bootswap70
bootswap80
bootswap90
swap-off
bootswap-off
Instructions
swaponXX (20,30,40,50,60) - will result in swap being turned on with a swappiness of XX
bootswapXX (20,30,40,50,60) - will enable swap at boot time with a swappiness of XX (no usuerinit.sh needed)
swap-off - Turns running swap off.
bootswap-off - removes init swap script from boot. (see above notes for removal if you used the newer script)
SWAPFILE CREATOR:
http://www.mediafire...yr7w2yd5sfobyte
For anyone interested in testing different swap sizes and swappiness or those with no partition other than the standard fat, I threw together a swapfile script allowing for several common configurations. Similar to my swapscript after flashing from recovery a number of new commands will become available in terminal:
Instructions
First create a swap file on your sdcard or sd-ext partition:
swapfileXX (size 12,24,36,64,96,128 on sdcard fat partition)
extswapXX (size 12,24,36,64,96,128 on sdcard ext partition)
Then set swappiness:
swpXX (XX is swappiness in increments of 10 up to 90)
errors in script are normal, script references both fat and ext locations, will fix this next update
swapfile-off (stop swap file in use)
errors in script are normal, script references both fat and ext locations, will fix this next update
clearswapfile (stops swap file and removes all swap files created)
errors in script are normal, script references both fat and ext locations, will fix this next update
Swapfile at boot ONLY SUPPORTED FOR SWAPFILE ON EXT:
bootswapfileXX (XX is swappiness in increments of 10 up to 90)
bootswapfil-off - removes bootswap
SwapFileScript:
http://www.mediafire...yr7w2yd5sfobyte
How to tell if swap is currently in use:
in terminal emulator or adb shell type 'free' with no 's and press enter
if there is a number in the space that says swap you have swap enabled
Starting this thread to share experiences with any good sysctl settings for the flyer.
What is sysctl?
Sysctl is an interface for examining and dynamically changing parameters in the Linux operating systems.
What is sysctl.conf?
sysctl.conf is a simple file containing sysctl values to be read in and set by sysctl command. The syntax is simply as follows:
# comment
; comment
token = value
Note that blank lines are ignored, and whitespace before and after a token or value is ignored, although a value can contain whitespace within. Lines which begin with a # or ; are considered comments and ignored.
Where is sysctl.conf located?
sysctl.conf is located in /system/etc/ directory on your tablet.
Changing sysctl values
You could pull the file /system/etc/sysctl.conf from your phone, edit the data, push the modified file back to your phone.
However, it is easier (provided that you have init.d) to use a script in /system/etc/init.d/ which is ran at boot time to change the values:
Example via init.d script
You could have a file, e.g. /system/etc/init.d/84sysctl
#!/system/bin/sh
sysctl -w net.ipv4.tcp_fin_timeout=30
(this would change socket FIN timing)
Advantage of doing like this is that you don't have to modify your original /system/etc/sysctl.conf file.
So far I have been using:
sysctl -w vm.dirty_ratio=90
sysctl -w vm.dirty_background_ratio=55
sysctl -w vm.vfs_cache_pressure=10
sysctl -w vm.swappiness=0
sysctl -w vm.panic_on_oom=1
sysctl -w net.core.wmem_max=1048576
sysctl -w net.core.rmem_max=1048576
There are two import settings which control the kernel behaviour with regard to dirty pages in memory. They are:
vm.dirty_background_ratio
vm.dirty_ratio
The first of the two (vm.dirty_background_ratio) defines the percentage of memory that can become dirty before a background flushing of the pages to disk starts. Until this percentage is reached no pages are flushed to disk. However when the flushing starts, then it's done in the background without disrupting any of the running processes in the foreground.
Now the second of the two parameters (vm.dirty_ratio) defines the percentage of memory which can be occupied by dirty pages before a forced flush starts. If the percentage of dirty pages reaches this number, then all processes become synchronous, they are not allowed to continue until the io operation they have requested is actually performed and the data is on disk. In case of high performance I/O machines, this causes a problem as the data caching is cut away and all of the processes doing I/O (the important ones in dCache pool) become blocked to wait for io. This will cause a big number of hanging processes, which leads to high load, which leads to unstable system and crappy performance.
vm.swappiness=0
We don't swap ... so no need.
sysctl -w net.core.wmem_max=1048576
sysctl -w net.core.rmem_max=1048576
Increase the max size of TCP/IP send/receive buffers.
sysctl -w vm.panic_on_oom=1
This enables or disables panic on out-of-memory feature. If this is set to 1, the kernel panics when out-of-memory happens. If this is set to 0, the kernel will kill some rogue process, by calling oom_kill(). Usually, oom_killer can kill rogue processes and system will survive. If you want to panic the system rather than killing rogue processes, set this to 1.
vm.vfs_cache_pressure=10
This is more interesting. File system cache (dentry/inode) is really more important than the block cache above, so we really want the kernel to use up much of the RAM for them. The default value is 100, and what you want to do is lower that value to tell the kernel to favor the file system cache and not drop them aggressively.
i like!!! but how would you change a build.prop property? cause at first i thought sysctl was for changing build prop stuff =X
hello..
I'm using xperia active and I want to configure the zRam..
I currently on stock ICS rom. I use Diskinfo apps to check ram swap and it shows i have 60mb ram swap for default. but i didn't apply any zRam or swap script yet. So use this script to configure the zRam
#!/system/bin/sh
sysctl -w vm.swappiness=60
echo '1' > /sys/block/zram0/reset
echo $((30*1024*1024)) > /sys/block/zram0/disksize
mkswap /dev/block/zram0
swapon /dev/block/zram0
and set it in init.d (i have activate the init.d). I try to set lower value than 60mb which is 30mb but I can't see any changes when I check back at Diskinfo apps..I also check it using terminal emulator by typing "free" but it still same as shown Diskinfo.. Is there any other method can I use to configure the zRam?
p/s : sorry for bad english
pojhe said:
hello..
I'm using xperia active and I want to configure the zRam..
I currently on stock ICS rom. I use Diskinfo apps to check ram swap and it shows i have 60mb ram swap for default. but i didn't apply any zRam or swap script yet. So use this script to configure the zRam
#!/system/bin/sh
sysctl -w vm.swappiness=60
echo '1' > /sys/block/zram0/reset
echo $((30*1024*1024)) > /sys/block/zram0/disksize
mkswap /dev/block/zram0
swapon /dev/block/zram0
and set it in init.d (i have activate the init.d). I try to set lower value than 60mb which is 30mb but I can't see any changes when I check back at Diskinfo apps..I also check it using terminal emulator by typing "free" but it still same as shown Diskinfo.. Is there any other method can I use to configure the zRam?
p/s : sorry for bad english
Click to expand...
Click to collapse
Try running the script in ScriptManager or in Terminal (will need to be run as su). Any errors you see will also be occurring when the init.d script runs. If there aren't any errors and you reset your swap space then maybe your init.d isn't set up correctly. If you lose your new settings during a reboot, then something in the kernel or ROM is setting these values after init.d runs.
This is really weird, i got the same problem with stock kernel. Before, i thought swap wasn't even supported, but it's set in stock kernel, i can't modify it either, but i'm glad i have it on my locked bl, i thought it was impossible.
justmpm said:
Try running the script in ScriptManager or in Terminal (will need to be run as su). Any errors you see will also be occurring when the init.d script runs. If there aren't any errors and you reset your swap space then maybe your init.d isn't set up correctly. If you lose your new settings during a reboot, then something in the kernel or ROM is setting these values after init.d runs.
Click to expand...
Click to collapse
I found it.. the default zRam script actually located at /system/bin/zram_start.sh. So I just edit this script to adjust the desired value of zRam.. Thanks mate!
pojhe said:
I found it.. the default zRam script actually located at /system/bin/zram_start.sh. So I just edit this script to adjust the desired value of zRam.. Thanks mate!
Click to expand...
Click to collapse
Nice, what did you edit? I want to set it to 128
I use the following commands in a terminal app.
sysctl -w kernel.sched_rt_runtime_us=-1;
sysctl -w kernel.sched_rt_period_us=100000;
sysctl -w kernel.sched_rt_runtime_us=50000;
I verified the values are really updated by using root explorer.
The phone should be slowed down, but I get similar cpu marks in antutu as before.
Are these parameter really effective?
What is the correct way to apply them?
Thanks!!
I use the following commands in a terminal app.
sysctl -w kernel.sched_rt_runtime_us=-1;
sysctl -w kernel.sched_rt_period_us=100000;
sysctl -w kernel.sched_rt_runtime_us=50000;
I verified the values are really updated by using root explorer.
The phone should be slowed down, but I get similar cpu marks in antutu as before.
Are these parameter really effective?
What is the correct way to apply them?
Thanks!!