高速缓冲区上的性能分析

实验环境:RHEL6 ,4GB内核,无交换分区,特定情况下只允许使用3GB的内存,1GB的内存被根文件系统占用,不可使用。实际的测试环境是大块写盘数据准备进行回写操作。回写数据的大小大概每秒200Mb/s、

理论分析:由于回写线程每隔5秒钟启动一次,并且由于Linux的核心思想是充分利用高速缓冲区,导致watch free -m查看当前的剩余内存是60MB,目前提出两点疑问:

  1. 高速缓冲区上的数据量是多少?经过统计发现大概是2GB

  2. 按照剩余空间是60MB来算,大概在2秒钟的情况下,将耗尽内存的剩余空间,如果内存不能即使的进行回写,置高速缓冲区上的数据无效。内核有可能因为申请不到内存,而中断服务功能。

交换分区导致的磁盘读写问题:

    从实验的过程中,可以看出在磁盘上划分4GB的分区作为交换分区,交换分区被当做内存来使用,存放大量的不活跃的页,或者是操作系统进程间数据,导致了内存和交换分区之间频繁的数据交互。

交换分区是否应该划分在系统盘上值得商榷!!还是加大内存,还是修改内核代码修改读写缓存问题。

交换分区频繁的交换系统数据,非常不利的地方在于:

  1. IO出现性能瓶颈,无法迅速读取到数据,或者由于IO的瓶颈已经无法读取,造成系统的不稳定性。

  2. 过多的考虑文件系统读写性能,实际上应该关注的是如何在高速缓冲和磁盘的频繁读写中,选择折中的方案。毕竟大量的数据其实没有必要存放在高速缓冲区中,但是可以非常合理的进行数据的排序和合并,确实减少了磁盘的寻址,但是从某种角度来看,寻址是为了读取数据,而现在是刷新数据到磁盘上,因此确实是没有太大的必要合并数据,其实查看文件的碎片确实非常多,毕竟是几十个线程对磁盘不同文件的写入。实际上,系统是稳定的,不稳定的因素是高并发,肯定不是而是高负载,其实核心的就是寻找负载的平衡点,制衡突发事件的因素。删除交换分区不失为一个好办法,这样子避免了频繁的读写,当然最好是不要和系统在同一个设备上。

你可能感兴趣的:(交换分区,读写性能,高速缓冲区)