问题标签 [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.
java - 在 Java 中最小化磁盘 I/O 的吞吐量?
我最近阅读了一个建议,BufferedOutputStream
通过将缓冲区大小设置为 8MB 来“减少磁盘搜索对吞吐量的影响”,从而更有效地使用 Java 。
我对最后一句话很感兴趣:减少磁盘搜索的吞吐量命中?!?
这是什么意思/暗示?为什么 8MB 是一个神奇的数字?提前致谢!
performance - 在 Sqlite 中提交事务之前是否有任何磁盘 I/O 操作?
我的 sqlite 数据库只有一张表。这就是我要做的:创建一个包含一个表的数据库,在该表中插入 10,000 条记录,在某些列上创建所需的索引,然后关闭与数据库的连接。我在事务中(在 BEGIN 和 END 之间)将记录插入数据库。我还在插入后创建索引以使插入操作更快。我的问题是:在执行 COMMIT 命令之前是否有任何内容写入磁盘?我需要在内存上创建数据库及其表,在内存上插入记录并再次创建索引,然后一次将所有数据全部写入 dist。我是否使用以下代码实现了我的目的?如果没有,我该如何改进它?
mysql - 在 Linux 服务器上减少磁盘 IO 的最佳方法
我们有几个 linux 服务器,opensuse 和 centOS。托管在 linode 和 namecheap。
由于高磁盘 IO,所有这些都以不同的频率发出警告或崩溃。我的问题很简单。如何减少磁盘 IO。
这是一个普遍的问题,并不特定于任何特定的 Web 应用程序。我们运行许多站点,没有一个在文件或数据库中特别大。
关闭日志记录或减少日志的详细程度?缓存页面以减少 mysql 查找?
c++ - 高效的文件记录方式
我必须在 CSV 文件中记录大量数据,每行有 5 个元素。我使用了一个大缓冲区来存储行,然后在它被填充时一次性刷新它fwrite(...)
并重复直到需要。以下是日志记录功能的片段:
但这使得执行速度很慢,这不是因为刷新,因为“将文件刷新到磁盘”的消息没有打印在屏幕上。如果没有调用此日志记录功能,整个程序将在几分钟内执行,但与此同时,它甚至在 2 小时内都没有完成。还有其他一些基本缺陷吗?
hdfs - HDFS 随机读取和磁盘 IO
当我们从 HDFS 文件中读取一个字节时,这是否意味着从集群中某处的磁盘读取了一个完整的 HDFS 块(假设不涉及缓存)?
disk - OS X:如何以编程方式查找锁定的 CoreStorageVolumes
我以编程方式找出了 CoreStorage 卷的状态。
使用 IOServiceXyz / IORegistryXyz / ... 方法不适用于锁定的卷 - 这意味着如果用户没有(尚未)输入密码,我看不到有关此卷的信息。
使用diskutil cs list和/或diskutil cs info会有所帮助,但我必须启动 diskutil 并扫描输出。我不喜欢这种方式,因为它有点慢(使用 exec 启动程序,...)
有没有更好的办法?
至少 diskutil 可以做到 - 那么什么 API 使用 diskutil 呢?
有一个 libCoreStorage.dylib 但我找不到任何关于它的文档。它在哪里?
任何帮助表示赞赏!问候
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”进入列?
如果有人对我想做的事情有最好的方法,我当然非常愿意接受建议!
谢谢
c - 为什么这个程序会给出分段错误?
这是我编写的用于检查文件和磁盘之间的字节的程序。
请不要问我为什么要比较sdz
和一个文件。这正是我想做的:将文件直接写入磁盘并读回。
sdz
是一个环回设备,其中是一个链接到/dev/loop0
. 现在文件和磁盘是否不同并不重要,但我希望我的程序能够工作。通过一些调试,我发现了分段错误发生在哪里,但我不知道为什么。
长话短说:为什么这给了我分段错误?
提前致谢
php - EC2 - 高 CPU 和高磁盘读取 - 崩溃
出于某种原因,今天我的 EC2 服务器不断达到 100% 的 CPU 和高磁盘读取。我已经关闭了所有的 cronjobs,但它仍在发生。我的数据库是服务器外部的 RDS。我应该检查任何初始项目吗?我正在为我的 cronjobs 使用 PHP 脚本(8 个单独的脚本,从每 5 分钟到每天两次运行)。
两者同时发生。我还附上了我运行 top 时显示的屏幕截图。
python - 并行磁盘 I/O
我有几个想要阅读的日志文件。不失一般性,假设日志文件处理如下:
因为我有很多日志文件,所以我想在这个问题上抛出多处理(我的第一个错误:我可能应该使用多线程;有人请告诉我为什么)
这样做时,我突然想到,任何形式的并行处理在这里都应该是无效的,因为我的 HDD 上只有一个读取头,因此只能读取一个文件。时间。事实上,在这种推理下,由于可能同时请求来自不同文件的行,读取头可能需要不时地显着移动,导致多进程方法比串行方法慢。所以我决定回到单个进程来读取我的日志文件。
有趣的是,我注意到小文件(<= 40KB)确实得到了加速,并且只有大文件(>= 445MB)才注意到预期的减速。
这让我相信 python 可能会以块的形式读取文件,其大小超过了我一次请求的一行。
Q1:那么底层的文件读取机制是什么?
Q2:优化从传统硬盘读取文件的最佳方法是什么?
技术规格:
- python3.3
- 5400rpm 传统硬盘
- Mac OSX 10.9.2(小牛)