2014/02/03 (Mon) [program] とりあえず、manager->allocate の内部実装を int -> long long に変更した。 regex_mas 2GB 以上の file を読み込ますと、mmap と divide read の違いで結果が違ってしまう。 -> 多分、ちゃんと読み込みされていないのでは?? grep -c "doing" 2g.txt -> 5209072 ./regex -file 2g.txt -sw doing -cpu 4 -> 5209072 ./regex -file 2g.txt -sw doing -cpu 4 -dr -> 5190577 ./regex -file 3g.txt -sw doing -cpu 4 -> 7799680 ./regex -file 3g.txt -sw doing -cpu 4 -dr -> 5190577 やっぱり 2GB の壁くさい segmentation fault が起こらないということは、ちゃんと allocate はされているっぽい。 ということは、やはり read 関係のどこかで 2GB 制限がかかってるのではないか。 (API を int -> long long にかえないといけない部分がまだ存在すると思われる。 divide read mode 時、wbuf の address の動きが怪しい long だと MAX が約2GB。つまりどこかで long long にしないとこれは直らない。