您的位置:首页 > 运维架构 > Linux

Linux centos编译程序时的性能问题

2016-05-14 10:37 246 查看
昨天晚上在虚拟机上编译一个程序,命令启动后就睡觉了,今天早上起床,我的个乖乖,居然还在运行。用top看了一下cpu使用5%左右,空闲内存70M左右,脑袋一怕,估计IO有问题。因为我的vmware虚拟机是安装在移动硬盘上的,而编译过程需要读写/tmp目录,于是就想给虚拟机加独立的硬盘:

先关闭虚拟机,然后修改设置,增加硬盘

使用fdisk -l 察看新硬盘,我的显示
/dev/sdb1


使用fdisk /dev/sdb1进行分区,我就分了一个

backup /tmp to /tmp2

mount /dev/sdb1 /tmp

chmod 777 /tmp

结果发现还是不行,于是用vmstat 命令进行性能分析,发现swaped有1.9G, wa 一直在 95%以上。这时知道是内存不够。

下面是系统正常情况下vmstat 3 命令的输出。

r: 进程队列数

b:等待IO进程数

swpd:使用的虚拟内存

wa:等待IOcpu时间

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0      0 185300     72 201920    0    0     0     0   59  125  0  0 100  0  0
0  0      0 185300     72 201920    0    0     0     0   60  130  0  0 100  0  0
0  0      0 185300     72 201920    0    0     0     0   55  120  0  0 100  0  0
0  0      0 185300     72 201920    0    0     0     4   58  125  0  0 100  0  0
0  0      0 185300     72 201920    0    0     0     6   61  131  0  0 100  0  0
0  0      0 185300     72 201920    0    0     0     0   55  120  0  0 100  0  0


既然swap导致IO问题,能不能将swap分区换到IO性能更高的磁盘上呢?

下面是具体步骤:

1 mkswap /dev/sdb1

2 swapon /dev/sdb1

3. 使用swapon命令查看之前的swap分区并用swapoff命令关闭

4. 在/etc/fstab文件中加入:
/dev/sdb1 swap swap defaults 0 0
这样重起也会自动生效

结果发现没有任何改进,没办法只能先增加虚拟机的内存,以后再看看为什么程序消耗太多内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux vmstat