2011.03.31 23:00


메모리의 가용성확보를 위해, /dev/block/ramzswap0에 메모리를 swap.

num_devices=1 disksize_kb=51200  옵션적용. ( 50M)

ramzswap 테스트 커널을 오딘으로 덮은후,
/system/etc/icarus/ramzswap 디렉토리생성후 재부팅하면, 적용됨

ramzswap사용시, /data의 loopdevice 옵션을 ramzswap와 동시에 사용하지 마세요.
또한 bind data_to_dbdata 를 ramzswap과 동시에 사용하지마세요.


adb shell 에서,
$ ls /dev/block 또는
$ ls /dev/block/ramzswap0
해서 ramzswap0이 나오면 성공

루트익스플로러로에서, /sys/block/ramzswap0 이 있으면 성공.

<ramzswap 상태확인>
adb shell또는 터미널에서, 다음 2가지방법중 하나를 실행하여 메모리swap 상태 확인

$ free
              total         used         free       shared      buffers
Mem:       357480       331892        25588            0         8648
Swap:        51192         4460        46732
Total:       408672       336352        72320

$ cat /proc/meminfo
MemTotal:         357480 kB
MemFree:           28508 kB
Buffers:            8624 kB
Cached:            77936 kB
SwapCached:         2980 kB
Active:           118436 kB
Inactive:         140084 kB
Active(anon):      78184 kB
Inactive(anon):    99808 kB
Active(file):      40252 kB
Inactive(file):    40276 kB
Unevictable:        5672 kB
Mlocked:               0 kB
SwapTotal:         51192 kB
SwapFree:          46732 kB
Dirty:                28 kB
Writeback:             0 kB
AnonPages:        176448 kB
Mapped:            59520 kB
Shmem:               360 kB
Slab:              13888 kB
SReclaimable:       4816 kB
SUnreclaim:         9072 kB
KernelStack:        4032 kB
PageTables:        15840 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      229932 kB
Committed_AS:    8677504 kB
VmallocTotal:     319488 kB
VmallocUsed:       74400 kB
VmallocChunk:     202756 kB

<ramzswap 해제방법>

방법1 : /system/etc/icarus/ramzswap 디렉토리삭제후 재부팅

방법2 : adbshell 에서,
busybox swapoff /dev/block/ramzswap0
busybox rmmod ramzswap

<ramzswap 재 적용 방법>

방법1 : /system/etc/icarus/ramzswap 디렉토리 생성 후 재부팅

방법2 : adbshell 에서,
busybox insmod /icarus/lib/modules/ramzswap.ko num_devices=1 disksize_kb=51200
busybox swapon /dev/block/ramzswap0

출처 : http://code.google.com/p/compcache/wiki/CompilingAndUsingNew

Compiling and Using ramzswap (0.6 or newer)
Phase-Deploy, Featured
Updated Jan 24, 2010 by nitingupta910
  • NOTE
    • It requires kernel version 2.6.28 or higher.
    • Kernel 2.6.33 will have partial support for compcache. So, if you are using this kernel, please do not use in-tree compcache version. Use compcache version as available from this project's download page. Kernel 2.6.34 will (hopefully!) will have complete support.


compcache-0.6 brings some new features which require some changes to the way you use it. Some of the new features include:

  • Support for file as backing swap. Earlier versions (0.5.x) only allow using a block device as backing swap.
  • Support for multiple /dev/ramzswapX devices.
  • New rzscontrol utility to manage various ramzswap devices: setting parameters, initializing, resetting, stats collection.
  • Support for swap free notify callback. This will give ramzswap a callback as soon as a swap page becomes free -- stale data, no more!
    • A separate patch will be included that adds hooks in kernel swap path to enable this feature.
    • Rest of ramzswap will remain as separate modules. It will be usable on kernels with or without this patch. Of course, without patch, ramzswap will have this feature disabled.

Its known to work on x86, x86_64 and ARM.



  • make: This will compile all modules against your kernel
  • make doc: This will compile rzscontrol manual page: sub-projects/rzscontrol/man/rzscontrol.1
    • Apply patch found in compcache/patches/ directory and just compile the kernel as usual -- currently, patch is against 2.6.33 but it should apply to slightly older kernels too. This will enable 'swap free notify' feature. This allows kernel to send callback to ramzswap as soon as a swap slot becomes free. So, we can immediately free memory allocated for this page, eliminating any stale data in (compressed) memory.
    • Uncomment '#define CONFIG_SWAP_FREE_NOTIFY' in compcache/compat.h before compiling compcache against this patched kernel. Otherwise, this swap notify callback will not be used.

NOTE: ramzswap will work on kernels with or without this patch. Of course, this feature will be disabled if compiled against kernel without this patch.


Above compilation gives following modules:

  • ramzswap.ko (virtual block device driver)
  • rzscontrol (userspace utility to setup individual ramzswap devices)

Following shows a typical sequence of steps for using ramzswap.

  • Load Modules:
# load dependency modules 
modprobe lzo_compress 
modprobe lzo_decompress
# example1: load ramzswap module 
insmod ramzswap
.ko num_devices=4

This creates 4 devices (/dev/ramzswap{0,1,2,3}) which are left uninitialized.

# example2: load ramzswap module and initialize the first device 
insmod ramzswap
.ko num_devices=4 disksize_kb=20480

This initializes first device (/dev/ramzswap0) with disksize of 20MB. Other 3 devices (/dev/ramzswap{1,2,3}) are left uninitialized.

# example3: load ramzswap module and initialize the first device 
insmod ramzswap
.ko backing_swap=/dev/sda2 memlimit_kb=20480

This initializes the first device with a backing swap and memlimit of 20MB. Here only one device is created (num_devices=1 by default). If memlimit_kb was absent, default value of 15% of RAM would have been used.

Initialization of first device directly from insmod parameters is useful for embedded systems where shipping an additional binary (rzscontrol) might not be desirable. However, without rzscontrol, you cannot reset and reconfigure devices without module reload. Viewing ramzswap statistics is also possible only through rzscontrol utility.

  • Initialize:
Use rzscontrol utility to configure and initialize individual ramzswap devices. Example:
rzscontrol /dev/ramzswap0 --init # uses default value of disksize_kb
See rzscontrol manpage for more details and examples.
  • Activate:
    swapon /dev/ramzswap2 # or any other initialized ramzswap device
  • Stats:
    rzscontrol /dev/ramzswap2 --stats
  • Deactivate:
    swapoff /dev/ramzswap2
  • Reset:
    rzscontrol /dev/ramzswap2 --reset
  • Unload Modules:
    rmmod ramzswap

NOTE: You must issue reset after swapoff for any ramzswap device. The reset causes all the (per-device) memory to be freed and performs lots of cleanups.

(ramzswap module unload calls reset for all initialized devices).

Following state diagram shows various ramzswap device states. The rzscontrol utility sends various ioctls to the ramzswap module to get/set information about individual devices. In the following figure, ioctl(--blah) means action taken when 'rzscontrol /dev/ramzswapX --blah' is done for /dev/ramzswapX device.

Figure 1: ramzswap device states.

* Changing memlimit for an active device is not yet implemented

'안드로이드정보 및 자료' 카테고리의 다른 글

SmartAss Governor  (7) 2011.07.17
Dalvik-Cache  (1) 2011.04.05
RAMZSWAP  (15) 2011.03.31
BFQ-v2 IO Scheduler  (1) 2011.03.28
SIO I/O Scheduler ( Simple I/O Scheduler)  (2) 2011.03.28
BFQ IO Scheduler  (9) 2011.03.24
Trackback 0 Comment 15
  1. 미친kamui 2011.04.01 01:17 신고 address edit & del reply

    ^^;; 쿨럭.. 램스왑까지.ㅠㅠ 이카루스님의 능력의 끝은 어디세요..

  2. 봉봉2 2011.04.01 10:46 신고 address edit & del reply


  3. 김진원 2011.04.01 15:58 신고 address edit & del reply

    ㅜㅜ 전 암만봐도 어렵네요,, 고생 많으세요,,

  4. iCaRuS™ 2011.04.01 23:11 신고 address edit & del reply

    ㅎㅎ. 아~ramzswap.ko 모듈 빌드에, 커널패치및 컴파일까지 했는데,,,enable이 안되네요..
    휴..힘들다. 다시 해봐야겠어요~

  5. 소심아이 2011.04.01 23:22 신고 address edit & del reply

    이카루스님 정말 고생하십니다.. 펌업되고 최고의 커널로 나오길 기다립니다. ^^

  6. surellin 2011.04.02 09:03 신고 address edit & del reply

    안녕하세요. tc22펌용 스피드 커널을 절실히 기다리고 있습니다. ^^
    오랜만에 기다리면서 순정으로 사용중이군요. 미리 감사드립니다.

  7. 김종철 2011.04.02 10:16 신고 address edit & del reply

    저도 tc22 펌엄 안하고 이카루스님의 커널만 멀뚱멀뚱 기다리고 있습니다.

  8. skyjin0077 2011.04.02 12:55 신고 address edit & del reply

    오매불망, 이카루스님의 스피드커널만 기다리고 있습니다.
    외장 패치도 부두 7이 나와서 이카루스패치가 업글될걸로 믿는데 그게 오늘이면 얼마나 좋을까요? 일단 점심 먹고와서 또 들어와봐야죠...

  9. Jordan 1 KO 2012.05.29 15:51 신고 address edit & del reply

    덜컹 도로에서 시작된 브랜드 신발 산업에 가장 큰 영향 중 하나를 만드는 성장했으며이 날 때까지 계속 착용하고 자신의 외모를 칭찬했다.
    http://www.airjordan1ko.com/ Jordan 1 KO
    http://www.airjordan1ko.com/ Jordan Retro 1
    http://www.airjordan1ko.com/ Jordan 1

  10. Tom Brady Jersey 2012.07.07 11:11 신고 address edit & del reply

    5일(현지시간) 영국 텔레그래프에 따르면 나치 친위대장으로 강제수용소를 감독했던 하인리히 힘러는 1941년 8월27일 뒤셀도르프 게슈타포(나치 비밀경찰) 앞으로 한 통의 편지를 보냈다. 편지에는 '총통(히틀러)의 바람에 따라' 유대인 에른스트 헤스의 '구제와 보호'를 승인한다는 내용이 담겨 있었다. 앞서 히틀러는 헤스가 '박해 받거나 강제추방되지 않도록' 하라고 하달했고 힘러는 모든 관계 당국과 관리에게 헤스가 '어떤 식으로든 불편을 겪지 않도록 해라'고 지시를 내렸다. http://www.nikepatriotsjerseyonline.com/

  11. Jordan Retro 4 2012.07.09 10:21 신고 address edit & del reply

    그들이 게임에 참석하기 전에 히드로 공항은 런던과 영국의 첫 경험이 될 것입니다.공항은이 중대한 사건을 준비하기 위해 무엇입니까?
    http://www.jordan4firereds.com/ Jordan 4
    http://www.jordan4firereds.com/ Jordan Retro 4
    http://www.jordan4firereds.com/ Jordan 4 Fire Red
    http://www.jordan4firereds.com/ Jordan 4 Fire Red 2012
    http://www.jordan4firereds.com/ Jordan 4 Mars
    http://www.jordan4firereds.com/ Jordan 4 Mars 2012

  12. Jordan Retro 4 2012.07.23 15:35 신고 address edit & del reply

    지금까지 진정한 블루 왕족의 피가되고 꿈꿔왔다면 다음 법원, 당신에게 방법의 모든 단계를 지켜보고있는 공주로 통로를 따라 걷다. 아니면 스타에 빠진 사람이라면, 주위 유명 인사 impersonators와 결혼.
    http://www.fireredjordan4s.com/ Jordan Retro 4
    http://www.fireredjordan4s.com/ Jordan 4s
    http://www.fireredjordan4s.com/ Jordan 4 Fire Red
    http://www.fireredjordan4s.com/ Jordan 4 Fire Red 2012

  13. Lebron 9 For Cheap 2012.10.05 12:39 신고 address edit & del reply

    신발 주변의 고체 고무 outsole는 아름다운 꽃 생기고 이전의 어떤 르브론 신발 한 후 다른 서클, 사용하여 패턴을 가지고 있습니다. 이 모든 스타일과 디자인은 법원에 대한 더 나은 그립을 제공합니다. 그러나, 귀하의 패턴이 등장해야 블랙 잭 운동화가 제공하는 판매자의 그립이 크게 감소 될 동정 할 수 있습니다. http://www.lebronshoes2012.org

  14. Monster Beats Studio 2012.10.23 09:48 신고 address edit & del reply

    앱의 경로 확인engraving do the work is concluded be ghaarias, the enameling do the job is done be the enameler, the goldsmith looks following the gold or kundan get the function completed and eventually stone setters do operate of just surroundings the dear or semi-precious stone inside the holes inside the jewellery. hhjjkkllppuyiiuyasa http://greatmonsterbeats.com/categories/Monster-Beats-Studio/

  15. oakley sunglasses outlet 2013.04.15 03:59 신고 address edit & del reply

    쌀은 어떻게 구했지만,찬까지는 마련할 수 없었던 모양이다.

티스토리 툴바