![]() device 단가를 낮추기 위해 저용량의 DRAM을 사용하면 다양한 memory pressure상황에 직면하게 되는데, 이를 100% 해결하기란 불가능하지만 어느정도 튜닝은 해야지. 1. cache 설정 /proc/sys/vm/vfs_cache_pressure : default 100 :높은 값일수록 cache(inode, dentry..)에 대한 reclaim 성향이 강해지고, cache를 회수하여 free memory로 회수하게 된다. /proc/sys/vm/dirty_background_ratio : default 20 :flusher가 시작되는 dirty page 비율 (percentage of system memory) 작을수록 빨리 flusher가 시작되므로 cache를 낮추는 효과 /proc/sys/vm/dirty_ratio (default 40) :process별 dirty page를 write out하는 비율 dirty_background_ratio와 동일하나 flush 주체가 다름 /proc/sys/vm/dirty_expire_centisecs (default 300 : 3000ms) :dirty page의 cache 상주 수명 작을수록 flusher 동작시 flush할 page가 많아지겠지.. /proc/sys/vm/dirty_writeback_centisecs (default 500 : 5000ms) :flusher 동작 interval 2. watermark 설정 /proc/sys/vm/min_free_kbytes (default : system memory에 따라 다름) :zone별 최소 보장해야하는 memory watermark 설정 기준값 계산을 통해 [min/low/high] 로 설정되며 계산 결과는 /proc/zoneinfo로 참조할 수 있다. (page 단위임) 주기적인 kswapd 동작에서 watermark 값을 참조하여, low 이하로 떨어지면 각종 reclaim/shrinker를 호출하여 high까지 확보하는 동작을 함. /proc/sys/vm/extra_free_kbytes : 별도 tunable이며 kernel 3.4이후에 들어온것 같은데 첫 버전은 모르겠음 watermark에 영향을 주는데 전체 min_free_kbytes가 min/low/high에 골고루 scaling되는데 반해 low,high에만 +되는 값으로 약간 땜빵성으로 보임 :android device에서는 framework의 screen buffer를 위해 전용되고 있는 것으로 보임. 3. swappiness /proc/sys/vm/swappiness (default : 60) swap device (zram, disk swap partition)을 사용할 때, swap out tendency를 설정함 큰 값일수록 swap 성향이 강해지나, swap이 많이 발생한다는 것은 free memory 확보에는 이점이 있지만, 급작스러운 덩치큰 memory 할당 요청에 대해서는 버벅임을 감수해야 함 : CONFIG_MEMCG/CONFIG_MEMCG_SWAP : android의 특수성으로 activity manager에서 control 할수 있는 swapping group에 대한 patch. android patch는 아니고, 특정 task에 대해 swappiness를 별도로 적용할 수 있는 cgroup 생성 (/sys/fs/cgroup/memory/sw) => 해당 cgroup에 등록된 task에 대해서 system default swappiness와 다른 값을 적용할 수 있고, 이를 android에서는 ActivityManager에서 control하게 된다. :: Lollipop ActivityManagerService.java::applyOomAdjLocked() (bg_non_interactive에 대해) Process.java::setSwappiness() |
|
'watermark'에 해당되는 글 1건
- 2015/03/12 scott [memory] memory pressure에 관한 kernel tunables
TAG dirty_background_ratio,
kernel memory,
lowmemorykiller,
memory pressure,
min_free_kbytes,
swappiness,
THREAD_GROUP_BG_NONINTERACTIVE,
vfs_cache_pressure,
watermark
받은 트랙백이 없고,
댓글이 없습니다.