我正在做一些关于 Ubuntu 15.10 x64
的研究工作。我想研究是否有办法让 2 个或更多进程同时读取一个文本文件并减慢彼此的读取速度。
例如,两个进程P1
和P2
。文本文件 /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);
条件一:
P1
正在运行。 P2
用于与 P1
进行“赛跑”,并计算平均阅读时间 TIME_1。
条件二:
P1
未 正在运行。仅运行 P2
并计算平均阅读时间 TIME_2。
我的目标是使 TIME_1 显着高于 TIME_2(这是为了研究目的)。但是我的实验不是那样的。 TIME_1 与TIME_2 几乎相同。
我知道可能有一些因素(例如文件系统缓存)会影响结果。我使用命令:echo 3 >/proc/sys/vm/drop_caches
来清除缓存。但它不起作用。
有什么想法吗?谢谢!
最佳答案
使用大文件进行实验。
请注意,如果 P1 和 P2 同时运行,平均时间可能会少于单个进程;因为其中一个进程可能会受益于另一个进程刚刚建立的新缓存,因此无需等待物理 I/O。您的实验很难设置,因为其中有很多变量和许多具有非正交效应的系统内部机制;并且可能会出现令人惊讶的结果。
关于c - 如何让多个进程同时读取同一个文件会减慢读取速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36147243/