자양
10.12.13
조회 수 6800
추천 수 4
댓글 13

아래 내용에 대해서는 본인이 몇일 사용해 본정도밖에 없으며,

특별한 피드백을 받은적이 없어서 결과에 대해서 알지 못합니다.

특별히 시스템에 위해적인 내용은 아니니 몇일 사용해 보셔도 큰 문제는 없습니다.

출처)

http://blog.naver.com/dowkim10/120119483848

(이전 벼리님 답글 땜에 글 한번 더 올렸네요..ㅎㅎ)

----------------------------------------------------------------------------------------

파일에 대한 억세스(read,write)에 대한 지연과 리눅스에서 사용하는 IO 스케듈러와 밀접한 관련이 있다.
물론 가장 IO 딜레이에 영향을 미치는 것은 파일시스템 및 플래시 매체이긴 하지만, 그다음으로 보자면 IO 스케쥴러로 생각된다.


리눅스에서 선택할 수 있는 IO 스케쥴러는 다음의 4가지 중에 하나이다.

http://www.wlug.org.nz/LinuxIoScheduler
Noop
Anticipatory
Dedline
CFQ (completly Fair Queuing)


Noop은 단순하며 ssd장치의 수명과 연관한다면 좋을수 있으며, Anticipatory는 핀을 사용하는 하드 디스크에 적합할 수 있으나 IO 딜레이가 큰편이며, deadline은 프로세서의 IO요청에 대해 특정 시간내에 처리를 하므로 starvation(굶는것)을 방지하고 response타이을 줄여 유저 인테페이스 반응을 좋게 한다.

일반적인 대부분의 리눅스 시스템(redhat, ubuntu)등은 CFQ를 사용하고 있다. 이는 CFQ가 하드 디스크를 사용하는 일반적인 환경에서 처리량 및 지연에 대해서 좋은 성능을 보여주고 있기 때문이다. (갤럭시s도 CFQ를 사용한다.)


하지만, 갤럭시s 같은 경우 처리량(performance/throuput)에 문제가 있는것은 아니다. 단지, response time이 늦는데 문제가 있다.
RFS 나 moviNAND 자체의 문제도 있지만, IO 스케듈러의 영향도 무시 못할 것이라 생각된다.

response time 또는 IO delay가 가장 작은 것은 스케듈러는 deadline 스케듈러이다. 하지만, 단점은로 IO에 대한 억세스가 더 많으므로 플래시 수명에는 더 안좋으며, 전체적인 성능은 좀 떨어진다.


아래 링크의 벤치마크 테스트 자료를 보면 deadline 스크쥴러의 IO 딜레이가 가장작다.
http://lwn.net/Articles/113869/

쿼드런트 벤치마크 및 RL 벤치마크
IO 스케듈러의 변경으로는 벤치마크 점수가 차이가 거의 나지 않는다.
이런 류의 벤치마크는 실제 사용상에서 중요한 IO delay대한 측정은 하지 않고, 단지 성능(performance, thouput, speed)에 대한 점수를 내기 때문이다.
그래서, 쿼드런트에서 2000점이 나온다고 하더라도, 한번씩 심각한 IO delay가 발생한다면 체감 성능은 더 않좋을 수 밖에 없다.
(본인이 사용하는 ext3패치는 1000점 정도 밖에 안나오지만 특별한 렉 현상이나 멈춤 현상이 없다.)

적용법
순정 커널, 패치 커널은 상관없지만 루팅은 되어 있어야 사용가능하다.
그리고, 아래 방법은 임시적인 방법이다. 아래와 같이 적용하더라도 폰을 껏다 키면 다시 원상태로 돌아온다.
(영구적으로 적용시킬려면 init.rc를 수정해서 커널 이미지를 새로 만들어야 한다.)
$ su
# echo "deadline" > /sys/block/{DEVICE-NAME}/queue/scheduler

여기서 {DEVICE-NAME}에 들어갈수 있는 내용으로는
stl9 (/system)
stl10 (/dbdata)
stl11 (/cache)
mmcblk0 (/data 및 /sdcard)
mmcblk1 (외장 sd)
... (기타 등등)

순정 커널 사용자라면 mmcblk0이 가장 크게 영향을 미칠 것으로 보이며, 임시적으로 몇일 사용해 보는 것은 시스템에 큰 영향이 없다.
(deadline IO 스케듈러의 해제는 그냥 껏다 키면된다.)

사용예)
# echo "deadline" > /sys/block/mmcblk0/queue/scheduler
이 경우 /data 및 /sdcard가 CFQ가 아니라 deadline방식으로 IO scheduler가 동작한다.

사용후기
본인의 경우 sd패치를 통해서 외장 sd가 /data로 바뀌어 있다.
그래서, 실험적으로 다음과 같이 변경하였다. (mmcblk1이 됨)
# echo "deadline" > /sys/block/mmcblk1/queue/scheduler

본인의 갤럭시s의 경우 사실 렉이 거의 없다.
따라서, 실제 체감적으로 성능 향상을 잘 알수 없었지만, 순정 커널 사용자라면 다른 차이점을 느낄수 있을지 모르겠다.

댓글 13
  • ?
    자양님의 글 잘읽고있습니다..^^
    적용완료했구요~! 플라시보효과인지는 모르겟지만.. 빨라진듯 합니다..^^
  • ?
    자양
    10.12.13
    플라시보 효과라.. 재밌는 표현이네요.. ㅎㅎ
    실제 빨라질거라 믿고 하면 진짜 빨라질듯...
  • ?
    태리
    10.12.13
    해보고싶은데 어케하는질 몰라서요 초보자에게 설명해주신다고 가정하에 설명해주시면 안될까요 ?

    ㅜㅜ 넘 어려워서..
  • ?
    bvlgaria
    10.12.13
    블로그 포스트 잘보고 있습니다..^^ 추가내용 기대되네요..
  • ?
    적용이 재대로 된건지 확인할수있는 방법은 없는가요?...그리고 한가지영역만 가능한가요? 예를들어 stl9 stl10
    stl11 mmcblk0 전부다 적용할수도 있는건가요?
  • ?
    dEcaDENt
    10.12.13
    현재의 부두나 태그라크의 EXT4 패치들처럼 뚝뚝 끊기는 종류의 파일 시스템에 효과가 조금이나 있으리라 생각합니다.
    (물론 근본적으론 프로요 자체의 파일 I/O 영역의 버그때문에 이클레어때보다 효과를 덜 보기 때문입니다)
  • ?
    자양
    10.12.13
    확인 방법은 다음과 같습니다. (아래는 default로 cfq가 되어 있음)
    $ cd /sys/block/{DEVICE-NAME}/queue
    $ cat scheduler
    noop anticipatory deadline [cfq]

    그리고, 모든 블럭(stl9, stl10, ...등)에 대해서 각각 설정을 바꿀수 있습니다.
  • ?
    dEcaDENt
    10.12.13
    부두커널 이용하시는 분들 스크립트로 넣어보실 생각이면 이대로 적용하시면 스케쥴러 있는건 죄다 되는것 같습니다.

    echo \"deadline\" > /sys/block/tfsr0!c/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr1/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr2/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr3/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr4/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr5/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr6/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr7/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr8/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr9/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr10/queue/scheduler
    echo \"deadline\" > /sys/block/tfsr11queue/scheduler
    echo \"deadline\" > /sys/block/tfsr12/queue/scheduler
    echo \"deadline\" > /sys/block/mmcblk0/queue/scheduler
    echo \"deadline\" > /sys/block/mmcblk1/queue/scheduler
    echo \"deadline\" > /sys/block/bml0!c/queue/scheduler
    echo \"deadline\" > /sys/block/bml1/queue/scheduler
    echo \"deadline\" > /sys/block/bml2/queue/scheduler
    echo \"deadline\" > /sys/block/bml3/queue/scheduler
    echo \"deadline\" > /sys/block/bml4/queue/scheduler
    echo \"deadline\" > /sys/block/bml5/queue/scheduler
    echo \"deadline\" > /sys/block/bml6/queue/scheduler
    echo \"deadline\" > /sys/block/bml7/queue/scheduler
    echo \"deadline\" > /sys/block/bml8/queue/scheduler
    echo \"deadline\" > /sys/block/bml9/queue/scheduler
    echo \"deadline\" > /sys/block/bml10/queue/scheduler
    echo \"deadline\" > /sys/block/bml11/queue/scheduler
    echo \"deadline\" > /sys/block/bml12/queue/scheduler
    echo \"deadline\" > /sys/block/stl1/queue/scheduler
    echo \"deadline\" > /sys/block/stl2/queue/scheduler
    echo \"deadline\" > /sys/block/stl3/queue/scheduler
    echo \"deadline\" > /sys/block/stl4/queue/scheduler
    echo \"deadline\" > /sys/block/stl5/queue/scheduler
    echo \"deadline\" > /sys/block/stl6/queue/scheduler
    echo \"deadline\" > /sys/block/stl7/queue/scheduler
    echo \"deadline\" > /sys/block/stl8/queue/scheduler
    echo \"deadline\" > /sys/block/stl9/queue/scheduler
    echo \"deadline\" > /sys/block/stl10/queue/scheduler
    echo \"deadline\" > /sys/block/stl11/queue/scheduler
    echo \"deadline\" > /sys/block/stl12/queue/scheduler
    echo \"deadline\" > /sys/block/dm-0/queue/scheduler
  • ?
    dEcaDENt
    10.12.13
    sk05용 부두 NILFS2에 적용 결과 부팅이 좀 빨라졌고 스크롤이 좀 더 부드러워졌습니다.
  • ?
    싹바리
    10.12.13
    스크립트 삽입하려면 어떤프로그램써야하죠? ㅠㅠ

    완전 쌩초보라서요 조언좀 부탁드려요 ㅠㅠ

    터미널로 수정은해서쓰고있는데 매번 수정하기 귀차나서 ㅠㅠ
  • ?
    벼리
    10.12.14
    맛클에 이런 자료들이 많이 올라와야 되는데 너무 감사합니다 ㅎㅎ
    많이 배우고 갑니다 ^^
  • ?
    10.12.14
    학교에서 공부하면서 OS 스케쥴에 배웟지 사용법은 몰랏었는데.
    좀더 공부를 해야겟네요 ㅠ
    감사합니다.
  • ?
    자양
    10.12.14
    혹시 플래시 수명을 걱정하실분 있을거 같아서 부연설명 드리자면,
    oneNAND의 경우 3-5만, moviNAND의 겨우 3-5천정도 write를 보장한다는 내용을 본적있는것 같은데,
    read의 경우 횟수와 상관이 없습니다.
    그리고, noop이나 deadline은 SSD(플래시)에서 추천된는 옵션이며, 수명상에는 noop이 좋지만, response가 아주 느려요..
    CFQ가 일반적인 하드디스크 타입에 최적화 되었지만, SSD에는 noop이나 deadline을 많이 쓰는듯
    deadline을 쓰면 눈에 먼저 띄는 것은 부팅타임이 빨라지는데, 이걸 확인하려면 init.rc에 넣어야 되죠.
    참고)
    http://www.phoronix.com/forums/showthread.php?t=16322
댓글 쓰기 권한이 없습니다.
분류 최신순 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
(수정) 파일들 덮어씌우다가 무한 부팅시 팁이라고 볼수 있을까 모르겠... 12 file 보민파파 3 2900 2010.12.13
갤럭시 s의 IO 스케쥴러 변경을 통한 IO 딜레이 단축 13 자양 4 6800 2010.12.13
z4root의 루팅 메커니즘 11 자양 1 5507 2010.12.13
[초보]오류에 의한 벽돌에 대한 팁 아닌 팁요.. 4 neO 4 3074 2010.12.13
factoryfs.rfs만으로 펌파일 만들기... 19 file 선아서방 5 5742 2010.12.12
zip align tool 사용법~ 4 file sungha 1 4385 2010.12.12
갤스 아이나비 검색 팁입니다... 1 file 한심한놈 1998 2010.12.12
NILFS2 사용자를 위한 GC 이야기(아주 조금 수정) 9 dEcaDENt 10 4255 2010.12.12
초보회원님들은 꼭 한 번씩 봐주시기 바랍니다!! 21 닉넴이뭐 9 2137 2010.12.11
T-CASH 어플 사용하시는 분들께. 5 가루약 1983 2010.12.11
간단하지만 튼튼한 거치대 만들기 3 file 쌍칼 2019 2010.12.10
모비낸드에 대한 고찰 3 file icanfeel 2866 2010.12.10
[DVR 테마] 새로나온 갤럭시S 옷진열장 테마로 꾸미는 방법입니다! 초콜렛왕 1 7136 2010.12.09
광속팁에서 쓸만한 팁 몇가지만 적용... 도시남자 1864 2010.12.09
★모비낸드None에 대한 팁입니다★ 19 혀늬다 3254 2010.12.09
올레~~~~~규규규규규규님 글씨체 찾았습니다! 8 file 현구돠 3985 2010.12.09
[팁]모비낸드버전이None으로나오는분들.. 3 혀늬다 1 2340 2010.12.09
루팅과 테마질문.. 2 정병묵 2138 2010.12.09
테그라크 빌드9 준비하시는 분들을 위한 팁 25 샤인님 3301 2010.12.09
[초보자용] apk 파일 수정하기!!! 11 file 망고멍땡 1 8391 2010.12.09
규*6 님 진저브레드 배터리 사용하시는분들 필독! 6 푸우♡ 1 2669 2010.12.09
강좌 DVR ibook 테마로 꾸며보자! 26 file 초콜렛왕 11 30037 2010.12.09
[갤스] 주의!! 외장패치시 옮길 폴더 5 file choique 1 3415 2010.12.08
갤럭시 핑크, 화이트 케이스갈이 4 술쌔비 2 2873 2010.12.08
TouckWiz30Launcher(겔탭버전) 에러나시는 분, 해결방법은 오딘으로 펌... 9 우리두리 2562 2010.12.08
진저올리다 반벽돌되신분들 필독!! 9 샤인님 2635 2010.12.07
ext2는 좀 위험하네요 ㅜㅜ 4 소히 1922 2010.12.07
framework 덮어쓰시다가 무한 reboot되시는분들께... 13 순규다 2 6790 2010.12.07
신버전 투명 유투브 위젯 4 file 고도처리 3601 2010.12.07
프로요 배터리 조기퇴근 및 동영상 끊김 해결법 총정리 23 Freaks 6134 2010.12.06
1 - 128 - 135