[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:22026] Re: 物理メモリサイズを取得する方法を教えて下さい



汐崎です。
岩佐様,田原様 有難うございます。

私のPCでは,
cat /proc/memoinfo は以下のようです。
        total:    used:    free:  shared: buffers:  cached:
Mem:  63258624 55939072  7,319,552        0  1802240 19972096
Swap: 131567616 13066240 118501376
MemTotal:        61776 kB
MemFree:          7148 kB
MemShared:           0 kB
Buffers:          1760 kB
Cached:          13772 kB
SwapCached:       5732 kB
Active:          29112 kB
Inactive:        20336 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:        61776 kB
LowFree:          7148 kB
SwapTotal:      128484 kB
SwapFree:       115724 kB


それと,後述の,sys_info.c の結果が以下の様になりました。
 sysinfo(): return error code=0
Uptime = 2979[s] 
Load: 1 min 800 / 5 min 3520 / 15 min 3648
RAM: total 63,258,624 / free 7,331,840 / shared 0
Memory in buffers = 1802240
Swap: total 131567616 / free 118501376
Number of processes = 68
----
以上から,/proc/memoinfoの<free>のメモリサイズと
sys_infoのRAM: free とLowFree が大体同じ結果になりましたので,
この値を,MB単位に切り,その50%程度を目安に
使用すしてみます。
このPCでは,3.5MBです。
>  個人的な意見ですが、
>
>    安全、って、何なんでしょう?
>    どうして、それが安全なんでしょう?
は,答えに窮します。

岩佐様,田原様 有難うございました。
----
以下は sys_info.c です。
=========
/* sys-info.c 
   refrence : man sysinfo, man 2 intro
*/

#include <stdio.h>
#include <sys/sysinfo.h>
#include <linux/unistd.h>     /* for _syscallX macros/related stuff */
#include <linux/kernel.h>     /* for struct sysinfo */

int main(int argc, char **argv)
{
	int error;
	struct sysinfo mypc_sysinfo;
	
	error = sysinfo(&mypc_sysinfo);
	printf("\n\n sysinfo(): return error code=%d\n", error);
	printf("Uptime = %ld[s] \nLoad: 1 min %lu / 5 min %lu / 15 min %
lu\n"
                       "RAM: total %lu / free %lu / shared %lu\n"
                       "Memory in buffers(used) = %lu\nSwap: total %lu / 
free %lu\n"
                       "Number of processes = %d\n",
                 mypc_sysinfo.uptime, mypc_sysinfo.loads[0],
                 mypc_sysinfo.loads[1], mypc_sysinfo.loads[2],
                 mypc_sysinfo.totalram, mypc_sysinfo.freeram,
                 mypc_sysinfo.sharedram, mypc_sysinfo.bufferram,
                 mypc_sysinfo.totalswap, mypc_sysinfo.freeswap,
                 mypc_sysinfo.procs);
	printf("\n");
	return(0);
}

#ifdef __INFO__		
 from man sysinfo 

   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 */
   char _f[22];              /* Pads structure to 64 bytes */
   };
#endif

- - -
汐崎:H.Shiozaki
E-Mail: sios_hs(at)ybb.ne.jp
URL: http://www.geocities.jp/sios_hp/
note: (at)部分を'@'に読替えてください。

References
[plamo:22016] Re: 物理メモリサイズを取得する方法を教えて下さい, Iwasa Dai

[検索ページ] [メール一覧]
Plamo ML 公開システム