2016-03-22 26 views
0

我正在做一些关于Ubuntu 15.10 x64的研究工作。我想研究是否有办法让2个或更多的进程读取文本文件,同时减慢彼此的阅读速度。如何在多个进程中同时读取同一文件减慢阅读速度?

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

P1的伪代码:

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用于与P1“竞赛”,并计算平均阅读时间TIME_1

条件2:

P1运行。只运行P2并计算平均读数时间TIME_2

我的目标是使TIME_1明显高于TIME_2(这是为研究目的)。但是我的实验并没有这样做。 TIME_1几乎与TIME_2相同。

我知道可能存在一些影响结果的文件系统缓存。我使用命令:echo 3 > /proc/sys/vm/drop_caches清除缓存。但它不起作用。

任何想法?谢谢!

+0

很可能** 1 KB **对于您的数据文件将被完全缓存,即*两者*都不会阻止其他文件。 – WhozCraig

+0

尝试1GB也许。 1KB读取将是一个原子IO操作。没有太多的机会放慢速度。 –

回答

0

使用大文件进行实验。

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

相关问题