即使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
您还没问过问题。我想您想问的是“为什么我的系统为什么速度慢”或“我怎样才能使其更快”,这两种方法都太含糊而无法回答。我将部分解决一个不太雄心勃勃的问题:“我如何调查我的绩效瓶颈”。
当系统无响应时,显然有很多磁盘活动。我的答案是基于此的。
无论磁盘有多快,交换都会变慢。要使交换明显更快,您无能为力。如果您的系统正在交换,则唯一可行的解决方法是使用更少的内存或购买更多的内存。
free
您可以使用该命令获取系统使用多少内存的快照free
。它显示如下内容:
total used free shared buffers cached
Mem: 3538356 3057180 481176 0 8588 280412
-/+ buffers/cache: 2768180 770176
Swap: 5124692 1563140 3561552
的Mem
,total
图中(这里3538356,约为3.3GB)是可用于进程RAM的数量(由视频卡或内核使用这不包括存储器)。
(具有64位内核的人们可以跳过本段。)由于x86体系结构的复杂性,内核有几种访问RAM的方法。如今,实际上,您可以在两种模式之间进行选择:PAE模式,该模式允许内核使用多达64GB的RAM。非PAE模式,仅允许内核使用大约3GB。存在非PAE模式的原因是PAE模式具有内存使用开销,只有拥有超过3GB的RAM才值得付出成本。有关的Ubuntu用户应阅读Ubuntu Wiki中的PAE页面。
的Mem
,free
不使用数字显示多少内存的任何东西。除非RAM使用不足或系统刚刚启动,否则它通常很小(例如,在多GB-RAM系统上为10–50MB)。这里的数字很高(450MB),这可能是因为最近关闭了使用这么多内存的应用程序。不用担心,它很快就会填满。
标题行-/+ buffers/cache
显示了进程使用了多少内存,而不是磁盘缓存。在这里,我们看到缓存只有大约730MB可用空间。那只是RAM的20%,不是很多。为磁盘高速缓存使用大量RAM对于保持系统响应能力很重要。
最后一行指示正在使用多少交换空间。即使RAM尚未满,使用交换功能也是正常的。Linux会在磁盘空闲时复制内存以进行预防性交换,以防磁盘稍后处于空闲状态时需要该内存。
Linux经常移动进程内存以进行交换,以便为磁盘缓存腾出空间。这是正常的系统行为,尝试将其调低会导致系统变慢。对于Linux应该交换多少有一个可调的设置,称为vm.swapiness
;。如果您尝试使用它,请确保尝试增加和减少交换性。
在示例free
输出中,我们看到交换中有大约40%的进程内存。这是否会影响性能取决于该内存的用途。如果这是一个尚未使用的大型应用程序,那么它不会受到损害。如果交换了部分正在使用的进程,则系统可能会非常无响应。
分析内存使用情况很困难。对于每个进程,您都可以测量它分配了多少地址空间。您可以(尝试)衡量它在给定时间主动使用了多少内存;您必须跟踪文件支持的内存(例如,从流程可执行文件和库中加载的代码)和非文件支持的内存(流程的堆栈和堆)。当然,进程之间共享大量内存,因此谈论给定进程使用多少内存没有太大意义。
你可以使用命令行工具,如内存使用的图片top
和htop
,或任意数量的图形化系统监控和性能米。对于htop
,如果您对内存使用感兴趣,请在“设置/显示”选项中打开“隐藏内核线程”和“隐藏用户态线程”选项。
在top
或的显示中htop
,相关列为VIRT
和RES
。VIRT
指示进程已分配了多少地址空间,包括共享和已分配但未使用的内存;不用太担心。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] 删除。
我来说两句