/usr/share/julia/base/sysinfo.jl is in julia-common 0.4.7-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | # This file is a part of Julia. License is MIT: http://julialang.org/license
module Sys
export CPU_CORES,
OS_NAME,
WORD_SIZE,
ARCH,
MACHINE,
cpu_info,
cpu_name,
cpu_summary,
uptime,
loadavg,
free_memory,
total_memory
import ..Base: WORD_SIZE, OS_NAME, ARCH, MACHINE
import ..Base: show, uv_error
global CPU_CORES
function init_sysinfo()
# set CPU core count
global const CPU_CORES =
haskey(ENV,"JULIA_CPU_CORES") ? parse(Int,ENV["JULIA_CPU_CORES"]) :
Int(ccall(:jl_cpu_cores, Int32, ()))
global const SC_CLK_TCK = ccall(:jl_SC_CLK_TCK, Clong, ())
global const cpu_name = ccall(:jl_get_cpu_name, Any, ())::ByteString
end
type UV_cpu_info_t
model::Ptr{UInt8}
speed::Int32
cpu_times!user::UInt64
cpu_times!nice::UInt64
cpu_times!sys::UInt64
cpu_times!idle::UInt64
cpu_times!irq::UInt64
end
type CPUinfo
model::ASCIIString
speed::Int32
cpu_times!user::UInt64
cpu_times!nice::UInt64
cpu_times!sys::UInt64
cpu_times!idle::UInt64
cpu_times!irq::UInt64
CPUinfo(model,speed,u,n,s,id,ir)=new(model,speed,u,n,s,id,ir)
end
CPUinfo(info::UV_cpu_info_t) = CPUinfo(bytestring(info.model), info.speed,
info.cpu_times!user, info.cpu_times!nice, info.cpu_times!sys,
info.cpu_times!idle, info.cpu_times!irq)
function show(io::IO, info::CPUinfo, header::Bool=true, prefix::AbstractString=" ")
tck = SC_CLK_TCK
if header
println(io, info.model, ": ")
print(io, " "^length(prefix))
if tck > 0
@printf io " %5s %9s %9s %9s %9s %9s\n" "speed" "user" "nice" "sys" "idle" "irq"
else
@printf io " %5s %9s %9s %9s %9s %9s ticks\n" "speed" "user" "nice" "sys" "idle" "irq"
end
end
print(io, prefix)
if tck > 0
@printf io "%5d MHz %9d s %9d s %9d s %9d s %9d s" info.speed info.cpu_times!user/tck info.cpu_times!nice/tck info.cpu_times!sys/tck info.cpu_times!idle/tck info.cpu_times!irq/tck
else
@printf io "%5d MHz %9d %9d %9d %9d %9d ticks" info.speed info.cpu_times!user info.cpu_times!nice info.cpu_times!sys info.cpu_times!idle info.cpu_times!irq
end
end
function _cpu_summary(io::IO, cpu::Array{CPUinfo}, i, j)
if j-i < 9
header = true
for x = i:j
if header == false println(io) end
show(io,cpu[x],header,"#$(x-i+1) ")
header = false
end
else
summary = CPUinfo(cpu[i].model,0,0,0,0,0,0)
count = j-i+1
for x = i:j
summary.speed += cpu[i].speed
summary.cpu_times!user += cpu[x].cpu_times!user
summary.cpu_times!nice += cpu[x].cpu_times!nice
summary.cpu_times!sys += cpu[x].cpu_times!sys
summary.cpu_times!idle += cpu[x].cpu_times!idle
summary.cpu_times!irq += cpu[x].cpu_times!irq
end
summary.speed = div(summary.speed,count)
show(io,summary,true,"#1-$(count) ")
end
println(io)
end
function cpu_summary(io::IO=STDOUT, cpu::Array{CPUinfo}=cpu_info())
model = cpu[1].model
first = 1
for i = 2:length(cpu)
if model != cpu[i].model
_cpu_summary(io,cpu,first,i-1)
first = i
end
end
_cpu_summary(io,cpu,first,length(cpu))
end
function cpu_info()
UVcpus = Array(Ptr{UV_cpu_info_t},1)
count = Array(Int32,1)
uv_error("uv_cpu_info",ccall(:uv_cpu_info, Int32, (Ptr{Ptr{UV_cpu_info_t}}, Ptr{Int32}), UVcpus, count))
cpus = Array(CPUinfo,count[1])
for i = 1:length(cpus)
cpus[i] = CPUinfo(unsafe_load(UVcpus[1],i))
end
ccall(:uv_free_cpu_info, Void, (Ptr{UV_cpu_info_t}, Int32), UVcpus[1], count[1])
return cpus
end
function uptime()
uptime_ = Array(Float64,1)
uv_error("uv_uptime",ccall(:uv_uptime, Int32, (Ptr{Float64},), uptime_))
return uptime_[1]
end
function loadavg()
loadavg_ = Array(Float64,3)
ccall(:uv_loadavg, Void, (Ptr{Float64},), loadavg_)
return loadavg_
end
free_memory() = ccall(:uv_get_free_memory, UInt64, ())
total_memory() = ccall(:uv_get_total_memory, UInt64, ())
function get_process_title()
buf = zeros(UInt8, 512)
err = ccall(:uv_get_process_title, Cint, (Ptr{UInt8}, Cint), buf, 512)
uv_error("get_process_title", err)
return bytestring(pointer(buf))
end
function set_process_title(title::AbstractString)
err = ccall(:uv_set_process_title, Cint, (Cstring,), title)
uv_error("set_process_title", err)
end
maxrss() = ccall(:jl_maxrss, Csize_t, ())
end # module Sys
|