Linux磁盘访问会减慢系统速度

tony_sid

即使CPU负载小于100%,我的系统也会变慢,我认为这样做是因为它正在写入交换分区。是的,我的交换分区位于与操作系统不同的磁盘上。我记得Windows使用ATA磁盘出现这种类型的减速问题。这是通过使用DMA模式解决的。我不确定我的磁盘是否使用DMA模式。它们是SATA驱动器,所以我以为是。这是hdparm的输出

/dev/sda:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 182401/255/63, sectors = 2930277168, start = 0

ev/sdb:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 30401/255/63, sectors = 488397168, start = 0

我上次看到这种类型的减速行为是从Windows 3.1开始的!

hdparm -i / dev / sda / dev / sdb的输出是这样的:

/dev/sda:

 Model=ST31500541AS, FwRev=CC34, SerialNo=6XW0N2LJ
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode


/dev/sdb:

 Model=HDT722525DLA380, FwRev=V44OA96A, SerialNo=VDB41BT4EUH03C
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=52
 BuffType=DualPortCache, BuffSize=7674kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=488397168
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode

当系统速度变慢时,这是free的输出:

             total       used       free     shared    buffers     cached
Mem:       3538356    3057180     481176          0       8588     280412
-/+ buffers/cache:    2768180     770176
Swap:      5124692    1563140    3561552
吉勒斯“别再邪恶了”

您还没问过问题。我想您想问的是“为什么我的系统为什么速度慢”或“我怎样才能使其更快”,这两种方法都太含糊而无法回答。我将部分解决一个不太雄心勃勃的问题:“我如何调查我的绩效瓶颈”。

当系统无响应时,显然有很多磁盘活动。我的答案是基于此的。

RAM和交换

无论磁盘有多快,交换都会变慢。要使交换明显更快,您无能为力。如果您的系统正在交换,则唯一可行的解​​决方法是使用更少的内存或购买更多的内存。

解释输出 free

您可以使用该命令获取系统使用多少内存的快照free它显示如下内容:

             total       used       free     shared    buffers     cached
Mem:       3538356    3057180     481176          0       8588     280412
-/+ buffers/cache:    2768180     770176
Swap:      5124692    1563140    3561552
  • Memtotal图中(这里3538356,约为3.3GB)是可用于进程RAM的数量(由视频卡或内核使用这不包括存储器)。

    (具有64位内核的人们可以跳过本段。)由于x86体系结构的复杂性,内核有几种访问RAM的方法。如今,实际上,您可以在两种模式之间进行选择:PAE模式,该模式允许内核使用多达64GB的RAM。非PAE模式,仅允许内核使用大约3GB。存在非PAE模式的原因是PAE模式具有内存使用开销,只有拥有超过3GB的RAM才值得付出成本。有关的Ubuntu用户应阅读Ubuntu Wiki中PAE页面

  • Memfree不使用数字显示多少内存的任何东西。除非RAM使用不足或系统刚刚启动,否则它通常很小(例如,在多GB-RAM系统上为10–50MB)。这里的数字很高(450MB),这可能是因为最近关闭了使用这么多内存的应用程序。不用担心,它很快就会填满。

  • 标题行-/+ buffers/cache显示了进程使用了​​多少内存,而不是磁盘缓存。在这里,我们看到缓存只有大约730MB可用空间。那只是RAM的20%,不是很多。为磁盘高速缓存使用大量RAM对于保持系统响应能力很重要。

  • 最后一行指示正在使用多少交换空间。即使RAM尚未满,使用交换功能也是正常的。Linux会在磁盘空闲时复制内存以进行预防性交换,以防磁盘稍后处于空闲状态时需要该内存。

    Linux经常移动进程内存以进行交换,以便为磁盘缓存腾出空间。这是正常的系统行为,尝试将其调低会导致系统变慢对于Linux应该交换多少有一个可调的设置,称为vm.swapiness;。如果您尝试使用它,请确保尝试增加和减少交换性

    在示例free输出中,我们看到交换中有大约40%的进程内存。这是否会影响性能取决于该内存的用途。如果这是一个尚未使用的大型应用程序,那么它不会受到损害。如果交换了部分正在使用的进程,则系统可能会非常无响应。

那么,所有这些内存都在使用什么呢?

分析内存使用情况很困难。对于每个进程,您都可以测量它分配了多少地址空间。您可以(尝试)衡量它在给定时间主动使用了多少内存;您必须跟踪文件支持的内存(例如,从流程可执行文件和库中加载的代码)和非文件支持的内存(流程的堆栈和堆)。当然,进程之间共享大量内存,因此谈论给定进程使用多少内存没有太大意义。

你可以使用命令行工具,如内存使用的图片tophtop,或任意数量的图形化系统监控和性能米。对于htop,如果您对内存使用感兴趣,请在“设置/显示”选项中打开“隐藏内核线程”和“隐藏用户态线程”选项。

top的显示中htop,相关列为VIRTRESVIRT指示进程已分配了多少地址空间,包括共享和已分配但未使用的内存;不用太担心。RES指示进程当前正在使用多少RAM(即,不计算交换)。

一种查看系统是否正在积极进行交换的方法是在工作时观看top显示。如果您看到RES某些进程数字上升而其他进程的数字下降,则意味着后者的进程已被换出以为前者腾出空间。如果这种情况经常发生,则您需要更多的RAM才能适应您的使用模式。

磁盘速度

根据过去的经验,您怀疑磁盘没有使用最快的可用访问模式。但是Linux不是Windows(尤其是在过去,Windows通常需要第三方驱动程序)。安装Linux发行版几乎总会为未知的所有外围设备提供最快的访问模式,这些外围设备不会导致崩溃或数据丢失(视频驱动程序有些例外。)

您可以使用确认系统正在使用DMA模式hdparm -i例如,您的磁盘都显示UDMA modes: … *udma6,表示它们正在使用最快的可用模式。(通常,UDMA快于DMA快于PIO;对于数字部分,UDMA快于PIO。)

您可以使用测量磁盘的原始吞吐量hdparm -t数字本身并不能直接提供有关系统响应速度的信息,但是比较两个磁盘或同一磁盘上两种访问模式的速度可能很有用。

有时,计算机的BIOS使您可以在磁盘的不同操作模式之间进行选择。当第一个SATA磁盘问世时,许多操作系统(例如Windows和Linux)都没有附带合适的驱动程序。因此,BIOS附带了一个选项,可以使用PATA仿真模式,该模式从原理上讲速度较慢,但​​兼容性更高。当时,磁盘的速度还不足以使SATA连接饱和,但如今它们可能会饱和。兼容设置通常称为“ IDE”或“ ATAPI”,而更快的设置通常称为“ AHCI”。

磁盘错误

与磁盘相关的速度下降的一种可能原因是磁盘出现故障,并且系统需要重试几次。有时,速度下降是最主要的表现,后来出现了以不可读文件形式出现的实际错误。

要查看是否是这种情况,请查看内核日志,通常在中/var/log/kern.log如果您看到类似

end_request: I/O error, dev sda, sector 123456789
ata3.00: error: { UNC }

确保备份是最新的,并立即更换磁盘。请注意,以上几行仅是示例,错误消息有很多变化。

您可以使用SMART监视工具获取有关磁盘运行状况的报告

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Linux交换减慢了我的系统速度?

来自分类Dev

为什么lxsession-logout会减慢X窗口系统的速度?

来自分类Dev

为什么HDD活动会减慢整个系统的速度(在Windows 7上)?

来自分类Dev

为什么lxsession-logout会减慢X窗口系统的速度?

来自分类Dev

复制文件会减慢系统速度,使其无法使用(KDE Neon)

来自分类Dev

哪个进程正在减慢系统速度?

来自分类Dev

NOLOCK提示会减慢操作速度吗?

来自分类Dev

HttpWebRequest可能会减慢网站速度

来自分类Dev

从IdentityDbContext <T>继承会减慢测试速度

来自分类Dev

通道会减慢读取速度吗?

来自分类Dev

ORDER BY子句会减慢查询速度吗?

来自分类Dev

ubuntu中的kswapd0减慢系统速度

来自分类Dev

Python,计算计算状态会减慢计算本身的速度

来自分类Dev

加入表值函数会减慢查询速度

来自分类Dev

为什么异步会减慢独立的后续代码的速度?

来自分类Dev

为什么DATEADD会减慢SQL查询的速度?

来自分类Dev

NSLog会减慢我的应用程序速度吗?

来自分类Dev

分配数组会减慢计算速度

来自分类Dev

从Hibernate 3迁移到4会减慢启动速度

来自分类Dev

插入文件时,MySQL查询会减慢速度

来自分类Dev

print()/ println()是否会减慢执行速度?

来自分类Dev

分配更多的内存会减慢操作速度吗?

来自分类Dev

并行化会减慢MatLab的执行速度

来自分类Dev

在php中遍历JSON会减慢我的页面加载速度

来自分类Dev

MySQL:使用OR子句进行连接会减慢速度

来自分类Dev

JS中的while循环会减慢浏览器的速度

来自分类Dev

多个php调用会减慢页面加载速度?

来自分类Dev

jQuery ajax请求被取消会减慢当前请求的速度

来自分类Dev

NSLog会减慢我的应用程序速度吗?

Related 相关文章

热门标签

归档