Module: MCMD::SysInfo
- Defined in:
- lib/nysol/msysteminfo.rb
Class Method Summary collapse
- .cPIDs(pid) ⇒ Object
- .cPIDsOnLinux(pid) ⇒ Object
-
.cPIDsOnOSX(pid) ⇒ Object
=======================================================.
- .getMemoryInfo ⇒ Object
- .getMyIP ⇒ Object
- .getMyIPOnLinux ⇒ Object
-
.getMyIPOnOSX ⇒ Object
=======================================================.
- .idleCPU ⇒ Object
- .idleCPUOnLinux(priod = 1) ⇒ Object
-
.idleCPUOnOSX(priod = 1) ⇒ Object
=======================================================.
- .LimitOver_Mem_Cpu?(limM = 5, limC = 5) ⇒ Boolean
- .memoryInfoOnLinux ⇒ Object
- .memoryInfoOnOSX ⇒ Object
- .ostype ⇒ Object
- .restMemoryRate ⇒ Object
- .rstMemoryOnOSX ⇒ Object
-
.ttlMemoryOnOSX ⇒ Object
mac用トータルメモリ情報取得.
-
.ttlRstMemoryOnLinux ⇒ Object
mac用トータルメモリ情報取得.
- .usedMemorybyPID ⇒ Object
Class Method Details
.cPIDs(pid) ⇒ Object
180 181 182 183 184 185 186 |
# File 'lib/nysol/msysteminfo.rb', line 180 def self.cPIDs(pid) if ostype == "Darwin" then return cPIDsOnOSX(pid) else return cPIDsOnOSX(pid) end end |
.cPIDsOnLinux(pid) ⇒ Object
175 176 177 178 |
# File 'lib/nysol/msysteminfo.rb', line 175 def self.cPIDsOnLinux(pid) rls =[pid] return rls end |
.cPIDsOnOSX(pid) ⇒ Object
=======================================================
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/nysol/msysteminfo.rb', line 156 def self.cPIDsOnOSX(pid) rls =[pid] pids =[pid] loop { rtn =[] pidset = Set.new(pids) `ps o pid,ppid | grep "#{pids.join("\|")}"`.split("\n").each{|lstr| vals = lstr.split("\s") ppid = vals[1].to_i if pidset.include?(ppid) then rtn << vals[0].to_i end } rls.concat(rtn) pids = rtn break if pids.empty? } return rls end |
.getMemoryInfo ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/nysol/msysteminfo.rb', line 92 def self.getMemoryInfo if ostype == "Darwin" then return memoryInfoOnOSX else return memoryInfoOnLinux end end |
.getMyIP ⇒ Object
199 200 201 202 203 204 205 206 |
# File 'lib/nysol/msysteminfo.rb', line 199 def self.getMyIP if ostype == "Darwin" then return getMyIPOnOSX else return getMyIPOnLinux end end |
.getMyIPOnLinux ⇒ Object
192 193 194 195 196 |
# File 'lib/nysol/msysteminfo.rb', line 192 def self.getMyIPOnLinux rls = `ifconfig eth0 | grep "inet "`.split[1] rls.gsub!(/addr:/,"") if rls return rls end |
.getMyIPOnOSX ⇒ Object
=======================================================
189 190 191 |
# File 'lib/nysol/msysteminfo.rb', line 189 def self.getMyIPOnOSX `ifconfig en0 | grep "inet "`.split[1] end |
.idleCPU ⇒ Object
127 128 129 130 131 132 133 |
# File 'lib/nysol/msysteminfo.rb', line 127 def self.idleCPU if ostype == "Darwin" then return idleCPUOnOSX else return idleCPUOnLinux end end |
.idleCPUOnLinux(priod = 1) ⇒ Object
118 119 120 121 122 123 124 125 |
# File 'lib/nysol/msysteminfo.rb', line 118 def self.idleCPUOnLinux(priod=1) # procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- # r b swpd free buff cache si so bi bo in cs us sy id wa st # 4 0 0 591720 98804 699532 0 0 71 13 46 855 9 0 91 0 0 # 0 0 0 591712 98804 699532 0 0 0 0 40 739 6 2 92 0 0 vstat_sp = `vmstat #{priod} 2 | tail -n 1 `.split return vstat_sp[-3].to_f end |
.idleCPUOnOSX(priod = 1) ⇒ Object
=======================================================
109 110 111 112 113 114 115 116 |
# File 'lib/nysol/msysteminfo.rb', line 109 def self.idleCPUOnOSX(priod=1) # sar output # 11:05:15 %usr %nice %sys %idle # 11:05:16 2 0 1 96 # Average: 2 0 1 96 sar_sp = `sar -u #{priod} 1 | grep ^Average`.split return sar_sp[4].to_f end |
.LimitOver_Mem_Cpu?(limM = 5, limC = 5) ⇒ Boolean
147 148 149 150 151 152 153 |
# File 'lib/nysol/msysteminfo.rb', line 147 def self.LimitOver_Mem_Cpu?(limM=5,limC=5) memR = restMemoryRate cpuR = idleCPU return ( memR != nil and cpuR != nil and ( memR < limM or cpuR < limC ) ) end |
.memoryInfoOnLinux ⇒ Object
88 89 90 |
# File 'lib/nysol/msysteminfo.rb', line 88 def self.memoryInfoOnLinux return ttlRstMemoryOnLinux end |
.memoryInfoOnOSX ⇒ Object
84 85 86 |
# File 'lib/nysol/msysteminfo.rb', line 84 def self.memoryInfoOnOSX return ttlMemoryOnOSX,rstMemoryOnOSX end |
.ostype ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/nysol/msysteminfo.rb', line 59 def self.ostype if RUBY_PLATFORM.match(/darwin/) then return "Darwin" else return "Linux" end return nil end |
.restMemoryRate ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/nysol/msysteminfo.rb', line 100 def self.restMemoryRate ttlmem,rstmem = getMemoryInfo if ttlmem != nil and rstmem != nil then return rstmem.to_f * 100.0 / ttlmem.to_f end return nil end |
.rstMemoryOnOSX ⇒ Object
72 73 74 75 76 |
# File 'lib/nysol/msysteminfo.rb', line 72 def self.rstMemoryOnOSX rmem = `vm_stat | grep "^Pages free"`.gsub(/\.$/,"").split[-1] rmem = rmem.to_f * 4096 if rmem != nil return rmem end |
.ttlMemoryOnOSX ⇒ Object
mac用トータルメモリ情報取得
69 70 71 |
# File 'lib/nysol/msysteminfo.rb', line 69 def self.ttlMemoryOnOSX return `sysctl hw.memsize`.split[-1] end |
.ttlRstMemoryOnLinux ⇒ Object
mac用トータルメモリ情報取得
79 80 81 82 |
# File 'lib/nysol/msysteminfo.rb', line 79 def self.ttlRstMemoryOnLinux memi = `free | grep "^Mem"`.split return memi[1],memi[3] end |
.usedMemorybyPID ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/nysol/msysteminfo.rb', line 135 def self.usedMemorybyPID rtn = [] `ps -p #{pid} -o pid,%cpu,%mem,vsz,rss,time`.split("\n").each{|lstr| vals = lstr.split("\s") next if vals[0] == "PID" rtn << vals[4].to_f * 0.001 tm = vals[5].split(":") rtn << tm[0].to_i * 60 + tm[1].to_f } return rtn end |