[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Is there a way to keep the 2.6 kjournald from writing to idle disks?(to allow spin-downs)


Hi everyone,

I run a server that usually doesn't have to do anything on the local filesystems,
it just needs to answer some requests and perform some computations in RAM.

So I use the "hdparm -S 123" parameter setting to keep the (IDE) system disk from
spinning unneccessarily.

Alas, since an upgrade to kernel 2.6 and ext3 filesystem, I cannot find a way to
let the harddisk spin down - I found out that "kjournald" writes a few blocks every
few seconds.

As I wouldn't like to downgrade to ext2: Is there any way to keep the 2.6 kjournald
from writing to idle disks?

I cannot see a good reason why kjournald would write when there are no dirty buffers -
but still it does.


Regards,

Lutz Vieweg


BTW: I used the following script to find the source of the write operations,
      just start it in one terminal, do a "sync" in another, then say "hdparm -y /dev/hda"
      and you can see that immediately or a few seconds later kjournald will enter the
      "D" state and wake up when the disk has spun up.

-------------------------------------------------------------------------------------
#!/usr/bin/tclsh

cd /proc


set stat_arr {
  pid
  comm
  state
  ppid
  process_group,
  session
  tty_nr
  tty_pgrp
  flags
  min_flt
  cmin_flt
  maj_flt
  cmaj_flt
  utime
  stime
  cutime
  cstime
  priority
  nice
  num_threads
  it_real_value
  start_time
  vsize
  rss
  RLIMIT_RSS
  start_code
  end_code
  start_stack
  esp
  eip
  pending_signals
  blocked_sigs
  sigign
  sigcatch
  wchan
  nswap
  cnswap
  exit_signal
  task_cpu
  rt_priorit
  policy
}

proc scan_stat {_pids _dat} {
    upvar $_dat dat
    upvar $_pids pids
    global stat_arr

    set pids [lsort -integer [glob {[0-9]*}]]

    foreach pid $pids {
            set in [open "$pid/stat" "r"]
            set l [gets $in]
            close $in

            set a [split $l " "]

            foreach x $a n $stat_arr {
                    set dat($pid,$n) $x
            }
    }
}

#puts [array get dat]

array set dat {}
set pids {}

scan_stat pids dat

while {1} {
         after 1000

         array set new_dat {}
         set new_pids {}

         scan_stat new_pids new_dat

         foreach pid $new_pids {
                 if {$pid != [pid]} {
                    if {![info exists dat($pid,pid)]} {
                            puts "new process $pid $new_dat($pid,comm)"
                    } else {
                            set somechange 0
                            foreach a $stat_arr {
                                    if {$new_dat($pid,$a) != $dat($pid,$a)} {
                                            puts "$pid $new_dat($pid,comm) attribute '$a' from $dat($pid,$a) to 
$new_dat($pid,$a)"
                                            set somechange 1
                                    }
                            }
                            if {$somechange} {
                                    puts ""
                            }
                    }
                 }
         }

         array set dat {}
         array set dat [array get new_dat]
         set pids $new_pids
}
-------------------------------------------------------------------------------------


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo _at_ vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: