Linuxでの負荷平均を見つけるには、linux/kernel.hを含むsys/sysinfo.hを使用します。ここで、次の構造が定義されています。
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* swap space still available */
unsigned short procs; /* Number of current processes */
unsigned short pad; /* explicit padding for m68k */
unsigned long totalhigh; /* Total high memory size */
unsigned long freehigh; /* Available high memory size */
unsigned int mem_unit; /* Memory unit size in bytes */
char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
};
しかし、それは本当の負荷を与えないと思います。
出力:2552402、3214049236、134513148
この値はどういう意味ですか?
uptime
次のコマンドを使用して、現在の負荷を見つけることができます。
$uptime
13:00:14 up 35 min, 2 users, load average: 1.07, 0.95, 0.80
上記の2つの出力の間に接続が見つかりません。
インターネットで検索しました。これは、2 ^ 16(65536)で割ることを意味します。そして私もそれを試しました。(または、SI_LOAD_SHIFT、つまり1<<SI_LOAD_SHIFTでシフト1を実行します。65536=1<< 16であるため)
私は4つのi3-2120プロセッサを搭載したコンピュータを使用しています。'upitime'の出力は、CPUの数と関係があります。ウィキペディアload_average