커널 데몬 중지나 옵션등으로 디스크 i/o 발생을 막을 수 있는 방법이 없을까요?

goldedit의 이미지

안녕하세요..
리눅스 2.6 커널 머신에서 특정 커널 데몬을
슬립 시키거나 중지 또는 아예 동작하지 않도록(잠시동안 이라도) 하고 싶습니다.

ps 명령으로 커널 데몬 프로세스들을 보면...
디스크 관련 커널 데몬인 [kjournald] 와 [pdflush] 를 슬립 하여
궁극적으로 디스크에 그 어떤 주기적인 i/o도 발생 시키지 않으려는 것이
목적입니다.

데몬을 건드리거나 커널 설정을 바꾸거나, 혹은 커널 특정 부분의 소스를 수정하여
다시 컴파일 하여 올리든, 그 어떤 방법이라도 디스크에 i/o를 발생시키지 않는 방법이
있으면 답변 부탁 드립니다.
감사합니다.

JuEUS-U의 이미지

noflushd의 소스 코드에서 이런 걸 발견했습니다.

http://csourcesearch.net/package/noflushd/2.7.3/noflushd-2.7.3/src/kupdate.c

 // kupdate.c
static void pdflush_stop(kupdate_t k)
{
    long interval;
 
    if (!k)
        return;
 
 
    if (!pdflush_get_interval(k, &k->interval)) {
        ERR("Failed to get pdflush interval");
        return;
    }
 
    if (!pdflush_set_interval(k, 0))
        ERR("Failed to stop pdflush");
    else {
        /* Need to wait until all pending pdflush timers have
        * expired. Unfortunately there's no way to kick them. */
        sleep(k->fixup_interval(k->interval));
 
        DEBUG("pdflush stopped");
        k->stopped = 1;
    }
 
}
 
static int pdflush_set_interval(kupdate_t k, long interval)
{
    rewind(k->f);
    if (fprintf(k->f, "%ld\n", interval) < 0) {
        ERR("Failed to set net update interval");
        return 0;
    }
 
    return 1;
} 
 
※ k->f=fopen("/proc/sys/vm/dirty_writeback_centisecs", "w+");

이걸로 일단 pdflush를 멈출수는 있겠군요.

JuEUS-U의 이미지

구글에서 찾아보니 외국애들은 ext3를 ext2로 mount해서 kjournald를 비활성화시키더군요...
(참고로 ext2와 ext3는 상호 호환이 되는 파일시스템입니다.)