Module: MCMD::SysInfo

Defined in:
lib/nysol/msysteminfo.rb

Class Method Summary collapse

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

.getMemoryInfoObject



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

.getMyIPObject



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

.getMyIPOnLinuxObject



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

.getMyIPOnOSXObject

=======================================================



189
190
191
# File 'lib/nysol/msysteminfo.rb', line 189

def self.getMyIPOnOSX
	`ifconfig en0 | grep "inet "`.split[1]
end

.idleCPUObject



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

Returns:

  • (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

.memoryInfoOnLinuxObject



88
89
90
# File 'lib/nysol/msysteminfo.rb', line 88

def self.memoryInfoOnLinux
	return ttlRstMemoryOnLinux
end

.memoryInfoOnOSXObject



84
85
86
# File 'lib/nysol/msysteminfo.rb', line 84

def self.memoryInfoOnOSX 
	return ttlMemoryOnOSX,rstMemoryOnOSX
end

.ostypeObject



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

.restMemoryRateObject



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

.rstMemoryOnOSXObject



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

.ttlMemoryOnOSXObject

mac用トータルメモリ情報取得



69
70
71
# File 'lib/nysol/msysteminfo.rb', line 69

def self.ttlMemoryOnOSX
	return `sysctl hw.memsize`.split[-1]
end

.ttlRstMemoryOnLinuxObject

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

.usedMemorybyPIDObject



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