如何在多个进程中同时读取同一个文件会降低阅读速度?

时间:2016-03-22 06:04:50

标签: c linux multithreading file file-io

我正在Ubuntu 15.10 x64做一些研究工作。我想研究是否有办法让两个或多个进程同时阅读文本文件会减慢彼此的阅读速度。

例如,两个进程P1P2。文本文件/etc/example.txt。它有1KB的数据。

P1&#39的伪代码:

for (int i = 0; i < 1000000; i ++) {
  str = read_file ('/etc/example.txt', 'r');
  print(str);
}

P2的伪代码:

for (int i = 0; i < 100; i ++) {
  str = read_file ('/etc/example.txt', 'r');
  print(str);
}

time = get_the_whole_run_time();
print(time / 100);

条件1:

P1正在投放。 P2用于&#34;竞赛&#34;使用P1并计算平均阅读时间 TIME_1

条件2:

P1 正在投放。只运行P2并计算平均阅读时间 TIME_2

我的目标是使 TIME_1 显着高于 TIME_2 (这是出于研究目的)。但是我的实验并没有那么成功。 TIME_1 TIME_2 几乎相同。

我知道文件系统缓存可能会影响结果。我使用命令echo 3 > /proc/sys/vm/drop_caches来清除缓存。但它没有用。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用大文件进行试验。

请注意,如果P1和P2同时运行,平均时间可能小于单个进程;因为其中一个进程可能会受益于另一个刚刚建立的新缓存,因此无需等待物理I / O。你的实验很难建立,因为它中有许多变量和许多具有非正交效应的系统内部机制;可能会出现令人惊讶的结果。