dEcaDENt
10.12.12
조회 수 4255
추천 수 10
댓글 9

NILFS2 파일 시스템이 탐나지만 GC 설정때문에 쓰는데 거부감이 느껴지는 분들을 위한 글입니다.

기본 GC 설정으로도 충분히 사용 가능하긴 하지만, 설정 최적화를 하면 배터리 관리에 이득이 조금 있습니다.


NILFS2는 파일 시스템 특성상 체크포인트가 용량을 차지하며 쌓이게 되는데, 이를 가비지라고 합니다.

GC는 가비지 클리닝의 약자로써 쌓인 체크포인트만을 골라 삭제하는 행위를 말합니다.







1. protection_period : xx

생성된지 xx초 이내의 체크포인트는 GC로 삭제하지 않고 보존합니다.


가비지를 필요한 만큼만 보존해놓으면 일일이 체크포인트를 생성할 필요 없이 기존의 생성된 체크포인트로 찾아가기만 하면 되므로

전반적으로 UI가 좀 더 부드러워집니다.

즉, 자신이 화면 잠금을 풀고 다시 잠글때까지의 평균적인 사용시간 만큼 설정해 놓으시면 됩니다.

저는 길어야 10분이어서 600으로 설정해 놓았습니다.

지나치게 높게 설정해놓으면 폰 버벅임과 첫 NILFS2 적용 후 폰 사용불능 사태의 주원인이 됩니다.



2. min_clean_segments : xx%

전체 공간 대비 남은 공간이 xx%수준으로 떨어지면 GC가 작동합니다.


즉, 전체 1800MB의 공간 중 자신의 어플 설치 용량과 가비지의 용량 총 합이 전체의 100% - xx%에 도달하면 GC가 일어난다는 겁니다.

20~25%를 추천해드립니다.



3. max_clean_segments : xx%

GC가 일어날때 전체 공간의 xx% 수준까지 GC를 합니다.


즉, 이 수치를 85%라고 설정해놓으면 GC가 일어날때 전체 1800MB 공간들 중 여유공간의 용량이 85%인 1530MB가 될때까지 GC를 하겠다는 겁니다.


100%로 설정해놓으시면 가비지를 있는대로 다 GC하긴 합니다.

하지만 보다 효율적으로 GC를 일어나게 하려면 필요한 만큼만 GC를 하게 해야합니다.


GC는 똑똑하지만 조금 헛똑똑합니다.

실제로는 여유공간의 용량이 75%인데 85%로 설정해놓으면

실제 여유공간 용량과 설정 여유공간 용량의 갭 만큼, 즉 전체 공간의 10%만큼의 공간을 추가적으로 더 가비지가 없는지 스캔합니다.

이는 곧 시간낭비 + 베터리낭비입니다.

100 - (자신의 실제 어플 설치 총 용량 / 전체 공간 용량 * 100) 로 계산해서 나온 수치에서 5%정도만 더 빼서 최대값을 잡아주시면 되겠습니다.



4. clean_check_interval : xx

xx초마다 남은 공간의 용량을 체크합니다.


기본인 10초 그대로 냅두시면 됩니다.

기호에 따라 조절하실 순 있지만 오히려 설정값이 너무 괴상하면 독이 됩니다.



5. selection_policy : timestamp

이는 설명 안하겠습니다. 바꾸는 옵션이 하나 있긴 하지만 GC에는 전혀 필요 없습니다.



6. nsegments_per_clean : x

체크포인트가 xMB만큼 생성되면 이를 GC의 대상에 집어넣습니다.


적게 설정할수록 체크포인트를 적게 쌓긴 하지만 앱 돌릴때 체크포인트를 제때제때 필요한만큼 생성해주질 못해서 퍼포먼스가 떨어집니다.

반대로 크게 설정할수록 퍼포먼스는 좋아지지만 체크포인트가 많이 쌓이므로 GC를 자주자주 해줘야 합니다.

기본인 2로도 충분히 괜찮습니다.


현재 삼성제 프로요 펌웨어들의 경우 데이터 입출력 속도가 상당히 떨어지므로 보다 크게 설정하면 대역폭의 한계때문에

오히려 퍼포먼스가 떨어질수도 있습니다.



7. mc_nsegments_per_clean : x

GC가 일어날때 한번에 xMB만큼 GC를 합니다.


크게 잡을수록 한번에 제거하는 가비지 용량이 많아져 GC가 일어나는 시간을 줄이고 베터리 소모량을 줄일 수 있지만

지나치게 크게 설정하여 갤럭시S의 데이터 입출력 속도 이상이 되어버리면 오히려 GC가 일어날때 폰을 지나치게 버벅이게 만들 수 있습니다.

지나치게 버벅이게 설정하면 오히려 GC가 일어나는 시간이 길어져 배터리 소모가 더 심해지니 주의해주세요.



8. cleaning_interval : x

6번을 x초마다 합니다.


빨리빨리 설정할수록 GC가 빨리 쌓입니다.

기본으로도 충분합니다.



9. mc_cleaning_interval : x

GC를 x초마다 합니다.


GC할때 버벅임을 좀 줄이고 싶으신 분들은 조금 여유있게 하셔도 되고

아싸리 GC 빨리빨리 끝내고 싶은 분들은 타이트하게 설정하시면 됩니다.



10. retry_interval : xx

xx초마다 GC를 재시도.


이는 2번과 4번에 종속됩니다,

이를 문장으로 설명해드리면

'2번을 25%, 4번을 10, 10번을 60초로 설정해놓으면

10초마다 체크된 빈공간의 용량이 전체의 25%가 되었는지의 여부를 GC가 60초마다 체크합니다.'









도움이 되었는지 모르겠습니다.

제가 딱히 지식이 있어서 썼다기 보단 경험에 의해 얻어낸 결론들로 작성해 보았습니다.

관리하실때 그냥 참고만 하시면 될듯.....


아주 미묘한 차이이지만 수정한 부분 밑줄로 강조했습니다.

혹시나 해서 검토해보니 분명한 차이가 있군요.

댓글 9
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2