2016-03-22 9 views
0

私はUbuntu 15.10 x64についていくつかの研究をしています。 2つ以上のプロセスが同時にテキストファイルを読みとってお互いの読みを遅くする方法があれば、私は勉強したい。複数のプロセスで同時に同じファイルを読み込む方法は、読み込み速度が遅くなりますか?

たとえば、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); 

条件1:

P1が実行されています。 P2P1と競合するために使用され、平均読み取り時間は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を同時に実行すると、平均時間は1つのプロセスの場合よりも短くなる場合があります。プロセスの1つが直前に設定した新しいキャッシュのメリットがあるため、たとえば物理I/Oを待つ必要はないためです。あなたの実験は設定が非常に困難です。その中には多くの変数があり、非直交効果を持つ多くのシステム内部メカニズムがあります。驚くべき結果が出ることがあります。