我正在一个大型共享 Ubuntu 服务器上工作,这让我的同事很恼火。我的一个过程是在 MySQL 数据库中进行大量插入,这使整个服务器陷入困境。
MySQL 没有使用大量 CPU 资源,也没有使用大量 RAM。如果是这种情况,我可以使用工具 'nice' 和 'ulimit' 来限制进程(实际上我在 MySQL 上使用 nice 并且没有帮助)。相反,MySQL 似乎在进行大量随机磁盘读写操作,因此每当其他人想要从磁盘读取或写入文件时,他们必须等待一两秒钟,这对于交互式使用是不可接受的。
关于我可以做些什么来限制 MySQL 的磁盘 I/O 的任何想法?(我正在寻找操作系统或内核级解决方案,而不是更改系统硬件设置的建议)。
我需要的在这里的留言板中得到了很好的描述。
即使我有足够的 RAM 和 CPU 可以使用,我也无法一次完成几项工作,我真的很生气 - 所以这是磁盘使用情况,例如当我使用 WinRAR 或其他磁盘提取大档案时 -写饥渴的东西。
我希望能够将其限制为 20%,因此 WinRAR 最多只能使用磁盘写入能力的 20%,这将导致
“不再挂断我的操作系统,即使在我打开一个大档案时也能处理多任务”
在执行此类磁盘密集型作业时。
如果您知道如何通过应用程序限制磁盘的 I/O,那么这将非常有帮助!
我的操作系统:Windows 7 Ultimate x64。我尝试设置进程关联和优先级,但没有运气。
我在系统进程中遇到了高磁盘 IO 和 CPU 使用率的问题。使用性能监视器,我可以看到它从“系统卷信息”写入和读取大约 100MB/s。
我试图获得有关“系统”的哪个部分正在执行写入的更多信息,但是 sysinternals 进程资源管理器仅将 TrueCrypt 线程显示为 CPU 使用率,这是可以理解的,因为它们必须以 100MB/s 的速度进行加密。有没有办法深入查看系统的哪个部分正在将内容写入“系统卷信息”并实际创建 IO?
我检查了通常的嫌疑人,无论如何都禁用了碎片整理和还原点。我还卸载了用于备份的 Crashplan 和 TrueImage,这可能是使用 Shadow Copy 内容执行此类操作的一个原因。最近没有安装新软件,只有两周前的 Windows 更新。
不知道我的 SSD 可以用多久 =)
我检查了应用程序事件日志,发现每秒记录了大约 20 个 MSSQL Server 条目。删除了服务器及其所有组件,问题就消失了......感谢大家的提示!
我在 Windows 8 上遇到了问题:System.exe 开始访问硬盘驱动器并疯狂地写/读大约 5-10 分钟,它每 5 分钟执行一次,当时计算机疯狂地滞后,甚至鼠标和键盘都无法使用...有没有办法摆脱这种疯狂的阅读/写作?我可以检查或做些什么来找出导致它的原因?这是相当新的问题,几天前开始。我想不出当时完成的任何异常(软件或驱动程序更新)...
在任务管理器中,我可以看到 100% 的 SSD 活动,在资源监视器中,我可以看到 System.exe 有时会写入/读取 40-50 个文件一次......
下面我附上一些屏幕截图:
任何帮助表示赞赏,这件事让我发疯......
我过去曾看到过有关“突出显示”STDOUT 和 STDERR 之间不同输出流的问题,但我想知道在 Windows 上是否有更简单的方法来做到这一点。
我感兴趣的原因是因为我在流 3 和 4 上有多个应用程序打印输出,这导致结果混乱和不必要的调试,直到我随机检查每个可能的输出流。
有没有人有一个很好的内置解决方案来确定哪个输出流控制台输出来自?我想应该有某种监视器(SysInternals?WMI?)来显示控制台上打印的信息来自哪里?
我使用的是配备两台 4k 显示器、Time Capsule、USB 和扬声器的 Thunderbolt 3 集线器,通过我的 MacBook Pro 连接到它。这一切都是通过一根 Thunderbolt 3 电缆完成的。是否可以实时监控通过该端口/电缆的数据量?
我有一个磁盘 I/O 密集型应用程序,我在其中同时进行大量读取和写入。对于旋转磁盘来说,存在争用是有道理的,因为指针必须频繁移动,但由于 SSD 的访问能力,SSD 应该对此更具弹性。然而,如果有足够的 I/O,我们可能会使控制器或通道饱和。
是否有博客/资源/白皮书描述如何在 SSD 中读取和写入内容,以及是否有办法查看 Linux 应用程序是否接近此限制?
谢谢尼特亚
我想测试一个分区创建软件,例如parted.
我发现一个旧的 USB 记忆棒,每当我尝试读取它时,它就会使程序崩溃。为了保留这个测试用例,我需要尽可能准确地复制 USB 记忆棒,保留 IO 错误。
我知道在读取该文件的某些字节时可能不可能让我的 HDD 抛出 IO 错误,但也许它可以通过某种程序来模拟,该程序将整个 U 盘内容硬编码并记住何时抛出 IO 错误?
我正在使用 Arch Linux,并且更喜欢可以适应它的解决方案(可能通过某种虚拟机或机器模拟器)。
您可以使用进程监视器轻松观察到程序正在执行 I/O 磁盘操作。有没有一种简单的方法可以准确观察每个进程正在读取/写入哪些文件?
欢迎 Windows/Linux 解决方案!
我们可以用来netstat列出所有软件端口,但是如何列出所有硬件端口,有这样的工具吗?
io ×10
hard-drive ×2
windows ×2
windows-7 ×2
cmd.exe ×1
command-line ×1
cpu ×1
disk-cloning ×1
hpc ×1
lag ×1
linux ×1
mysql ×1
performance ×1
port ×1
ssd ×1
thunderbolt ×1
unix ×1
windows-10 ×1
windows-8 ×1