Class: Ben::Disk
- Inherits:
-
Object
- Object
- Ben::Disk
- Defined in:
- lib/ben/disk.rb
Instance Attribute Summary collapse
-
#p_disk ⇒ Object
readonly
/dev/sda.
Class Method Summary collapse
Instance Method Summary collapse
-
#benchmark ⇒ Object
once.
- #get_model_number ⇒ Object
-
#initialize(p_disk) ⇒ Disk
constructor
A new instance of Disk.
-
#run ⇒ Object
run n times.
Constructor Details
#initialize(p_disk) ⇒ Disk
Returns a new instance of Disk.
12 13 14 |
# File 'lib/ben/disk.rb', line 12 def initialize(p_disk) @p_disk = p_disk end |
Instance Attribute Details
#p_disk ⇒ Object (readonly)
/dev/sda
10 11 12 |
# File 'lib/ben/disk.rb', line 10 def p_disk @p_disk end |
Class Method Details
Instance Method Details
#benchmark ⇒ Object
once
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ben/disk.rb', line 21 def benchmark read, unit = dd_result(`dd if=/dev/zero of=a.bin bs=1M count=1024 conv=fdatasync,notrunc 2>&1`) read = read.to_i `su root -c 'echo 3 > /proc/sys/vm/drop_caches'` write, unit1 = dd_result(`dd if=a.bin of=/dev/null bs=1M count=1024 2>&1`) write = write.to_i Ben.ui.say "This Time: #{read}#{unit} #{write}#{unit}" [read, write, unit] end |
#get_model_number ⇒ Object
16 17 18 |
# File 'lib/ben/disk.rb', line 16 def get_model_number `hdparm -I #{p_disk} | grep 'Model Number' | awk -F: '{print $2}'`.strip.downcase end |
#run ⇒ Object
run n times
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ben/disk.rb', line 35 def run rst = Rc.disk.counts.times.map { benchmark } unit = rst[0][2] read, write = rst.transpose[0..1].map {|v| v.inject(:+)/v.length.to_f } Ben.ui.say "Average: #{read}#{unit} #{write}#{unit}" today = Date.today.strftime("%Y-%m-%d") p_log = Pa("~/.ben/disk.#{get_model_number}") File.append(p_log.p, "#{today}: #{read}#{unit} #{write}#{unit}\n") rescue => e Pa.rm "a.bin" raise e end |