问题标签 [disk-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
169 浏览

java - 在 Java 中最小化磁盘 I/O 的吞吐量?

我最近阅读了一个建议,BufferedOutputStream通过将缓冲区大小设置为 8MB 来“减少磁盘搜索对吞吐量的影响”,从而更有效地使用 Java 。

我对最后一句话很感兴趣:减少磁盘搜索的吞吐量命中?!?

这是什么意思/暗示?为什么 8MB 是一个神奇的数字?提前致谢!

0 投票
1 回答
380 浏览

performance - 在 Sqlite 中提交事务之前是否有任何磁盘 I/O 操作?

我的 sqlite 数据库只有一张表。这就是我要做的:创建一个包含一个表的数据库,在该表中插入 10,000 条记录,在某些列上创建所需的索引,然后关闭与数据库的连接。我在事务中(在 BEGIN 和 END 之间)将记录插入数据库。我还在插入后创建索引以使插入操作更快。我的问题是:在执行 COMMIT 命令之前是否有任何内容写入磁盘?我需要在内存上创建数据库及其表,在内存上插入记录并再次创建索引,然后一次将所有数据全部写入 dist。我是否使用以下代码实现了我的目的?如果没有,我该如何改进它?

0 投票
1 回答
1713 浏览

mysql - 在 Linux 服务器上减少磁盘 IO 的最佳方法

我们有几个 linux 服务器,opensuse 和 centOS。托管在 linode 和 namecheap。

由于高磁盘 IO,所有这些都以不同的频率发出警告或崩溃。我的问题很简单。如何减少磁盘 IO。

这是一个普遍的问题,并不特定于任何特定的 Web 应用程序。我们运行许多站点,没有一个在文件或数据库中特别大。

关闭日志记录或减少日志的详细程度?缓存页面以减少 mysql 查找?

0 投票
2 回答
608 浏览

c++ - 高效的文件记录方式

我必须在 CSV 文件中记录大量数据,每行有 5 个元素。我使用了一个大缓冲区来存储行,然后在它被填充时一次性刷新它fwrite(...)并重复直到需要。以下是日志记录功能的片段:

但这使得执行速度很慢,这不是因为刷新,因为“将文件刷新到磁盘”的消息没有打印在屏幕上。如果没有调用此日志记录功能,整个程序将在几分钟内执行,但与此同时,它甚至在 2 小时内都没有完成。还有其他一些基本缺陷吗?

0 投票
1 回答
436 浏览

hdfs - HDFS 随机读取和磁盘 IO

当我们从 HDFS 文件中读取一个字节时,这是否意味着从集群中某处的磁盘读取了一个完整的 HDFS 块(假设不涉及缓存)?

0 投票
0 回答
74 浏览

disk - OS X:如何以编程方式查找锁定的 CoreStorageVolumes

我以编程方式找出了 CoreStorage 卷的状态。

使用 IOServiceXyz / IORegistryXyz / ... 方法不适用于锁定的卷 - 这意味着如果用户没有(尚未)输入密码,我看不到有关此卷的信息。

使用diskutil cs list和/或diskutil cs info会有所帮助,但我必须启动 diskutil 并扫描输出。我不喜欢这种方式,因为它有点慢(使用 exec 启动程序,...)

  • 有没有更好的办法?

  • 至少 diskutil 可以做到 - 那么什么 API 使用 diskutil 呢?

  • 有一个 libCoreStorage.dylib 但我找不到任何关于它的文档。它在哪里?

任何帮助表示赞赏!问候

0 投票
3 回答
2817 浏览

regex - 使用 top 和 awk 获取 iowait

对于基准脚本,我需要在一些操作后立即提取 iowait %。

目前,我找到的最好方法是:IOWAIT=top -bn2 | awk '$1~/Cpu/ {print $6}' | sed -n '2p' | tr -d '%wa,'

正确的输出类似于 2.1:

首先,如果我没有精确“-bn2”,我不知道为什么,如果我只捕获 1 次,它总是 0.1%。所以我捕获了两次,然后我 awk 获取 iowait 字段,然后我 sed 第二行,然后我删除了“%wa”

仅供参考,这是输出top -bn2 | grep Cpu

我的问题如下:当我得到一列 100.0%(例如空闲)时,它改变了列号,所以我的 awk 不再工作,我得到“0.0%hi”字段。

我的问题如下:

- 如何告诉 awk 使用“%wa”进入列?

如果有人对我想做的事情有最好的方法,我当然非常愿意接受建议!

谢谢

0 投票
2 回答
265 浏览

c - 为什么这个程序会给出分段错误?

这是我编写的用于检查文件和磁盘之间的字节的程序。

请不要问我为什么要比较sdz和一个文件。这正是我想做的:将文件直接写入磁盘并读回。

sdz是一个环回设备,其中是一个链接到/dev/loop0. 现在文件和磁盘是否不同并不重要,但我希望我的程序能够工作。通过一些调试,我发现了分段错误发生在哪里,但我不知道为什么。

长话短说:为什么这给了我分段错误?

提前致谢

0 投票
1 回答
272 浏览

php - EC2 - 高 CPU 和高磁盘读取 - 崩溃

出于某种原因,今天我的 EC2 服务器不断达到 100% 的 CPU 和高磁盘读取。我已经关闭了所有的 cronjobs,但它仍在发生。我的数据库是服务器外部的 RDS。我应该检查任何初始项目吗?我正在为我的 cronjobs 使用 PHP 脚本(8 个单独的脚本,从每 5 分钟到每天两次运行)。

两者同时发生。我还附上了我运行 top 时显示的屏幕截图。

CPU负载

磁盘读取

最佳

0 投票
3 回答
1523 浏览

python - 并行磁盘 I/O

我有几个想要阅读的日志文件。不失一般性,假设日志文件处理如下:

因为我有很多日志文件,所以我想在这个问题上抛出多处理(我的第一个错误:我可能应该使用多线程;有人请告诉我为什么)

这样做时,我突然想到,任何形式的并行处理在这里都应该是无效的,因为我的 HDD 上只有一个读取头,因此只能读取一个文件。时间。事实上,在这种推理下,由于可能同时请求来自不同文件的行,读取头可能需要不时地显着移动,导致多进程方法比串行方法慢。所以我决定回到单个进程来读取我的日志文件。

有趣的是,我注意到小文件(<= 40KB)确实得到了加速,并且只有大文件(>= 445MB)才注意到预期的减速。

这让我相信 python 可能会以块的形式读取文件,其大小超过了我一次请求的一行。

Q1:那么底层的文件读取机制是什么?

Q2:优化从传统硬盘读取文件的最佳方法是什么?

技术规格:

  • python3.3
  • 5400rpm 传统硬盘
  • Mac OSX 10.9.2(小牛)