由于Centos7和6的系统变化挻大的,所以先看看Centos7的内存信息是怎么样的。
系统版本:
1
2
3
|
[root@docker ~] # cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) [root@docker ~] #
|
查看内存信息:其实只需要关注前5行即可;
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
|
[root@docker ~] # cat /proc/meminfo
MemTotal: 2049248 kB MemFree: 85408 kB MemAvailable: 1061812 kB Buffers: 138044 kB Cached: 885028 kB SwapCached: 33308 kB Active: 881088 kB Inactive: 832516 kB Active(anon): 315948 kB Inactive(anon): 375464 kB Active( file ): 565140 kB
Inactive( file ): 457052 kB
Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 524284 kB SwapFree: 377836 kB Dirty: 24 kB Writeback: 0 kB AnonPages: 659500 kB Mapped: 71544 kB Shmem: 876 kB Slab: 160772 kB SReclaimable: 123148 kB SUnreclaim: 37624 kB KernelStack: 7408 kB PageTables: 20580 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1548908 kB Committed_AS: 2998548 kB VmallocTotal: 34359738367 kB VmallocUsed: 156648 kB VmallocChunk: 34359541760 kB HardwareCorrupted: 0 kB AnonHugePages: 434176 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 73664 kB DirectMap2M: 2023424 kB DirectMap1G: 0 kB [root@docker ~] #
[root@docker ~] # free -m
total used free shared buff /cache available
Mem: 2001 762 81 0 1156 1035 Swap: 511 142 369 [root@docker ~] #
|
内存使用率的计算:mem_used=MemTotal-MemFree-Buffers
python 代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#/usr/bin/env python import time import pymysql as mysql
db = mysql.connect(user= 'dba' , passwd = '123456' ,db= 'memory' ,host= 'localhost' )
db.autocommit(True) cur = db.cursor() def getMem(): f = open ( '/proc/meminfo' )
total = int(f.readline(). split ()[1])
free = int(f.readline(). split ()[1])
MemAvailable = f.readline(). split ()
cache = int(f.readline(). split ()[1])
mem_use = total- free -cache
t = time . time ()
sql = 'insert into memory(memory,time) values(%s,%s)' %(mem_use /1024 ,t)
cur.execute(sql)
#print mem_use
print ( 'ok' )
while True:
time . sleep (1)
getMem()
|
安装pymysql模块
1
|
pip install pymysql
|
创建数据库以及表:
1
2
3
4
5
6
7
|
MariaDB [(none)]> create database memory charset=utf8; MariaDB [(none)]> use memory; MariaDB [(none)]> CREATE TABLE `memory` ( `memory` int(11) DEFAULT NULL, ` time ` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
授权用户 MariaDB [(none)]> grant all on *.* to dba@ 'localhost' identified by '123456' ;
MariaDB [(none)]> flush privileges; |
执行python代码,每隔一秒就会打印一个ok到终端,然后在Mysql里查询一下;
1
2
3
4
5
6
7
8
9
10
11
|
MariaDB [memory]> select * from memory limit 5;
+--------+------------+ | memory | time |
+--------+------------+ | 1775 | 1513906229 | | 1775 | 1513906230 | | 1775 | 1513906231 | | 1775 | 1513906232 | | 1775 | 1513906233 | +--------+------------+ 5 rows in set (0.00 sec)
|
注:Mysql的表只用了两个字段,一个内存使用率,这个值是以兆为单位的,另一个就是时间了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
MariaDB [(none)]> use memory; Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed MariaDB [memory]> show create table memory\G *************************** 1. row *************************** Table: memory
Create Table: CREATE TABLE `memory` ( `memory` int(11) DEFAULT NULL,
` time ` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec)
MariaDB [memory]> |
本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/2053186,如需转载请自行联系原作者