comparison 2014/February/memo/03rd.txt @ 32:07176dd2dddc

add 03rd.txt
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Mon, 03 Feb 2014 20:35:58 +0900
parents 5c7d17c36564
children 37d843c14923
comparison
equal deleted inserted replaced
31:5c7d17c36564 32:07176dd2dddc
1 2014/02/01 (Sat) 1 2014/02/03 (Mon)
2 [program] 2 [program]
3 [昨日] 3 とりあえず、manager->allocate の内部実装を int -> long long に変更した。
4 2GB 以上を取ろうとすると 4 regex_mas 2GB 以上の file を読み込ますと、mmap と divide read の違いで結果が違ってしまう。 -> 多分、ちゃんと読み込みされていないのでは??
5 regex(19797,0x7fff75dad310) malloc: *** mach_vm_map(size=18446744071569698816) failed (error code=3)
6 *** error: can't allocate region
7 *** set a breakpoint in malloc_error_break to debug
8 Can't allocate memory
9 5
10 もしかして、allocate sizeに限界がある?? 6 grep -c "doing" 2g.txt -> 5209072
11 [改善] 7 ./regex -file 2g.txt -sw doing -cpu 4 -> 5209072
12 TaskManager/kernel/ppe/TaskManager.cc 8 ./regex -file 2g.txt -sw doing -cpu 4 -dr -> 5190577
13 TaskManager/kernel/ppe/TaskManager.h
14 TaskManager/kernel/ppe/TaskManagerImpl.h
15 9
16 size が int 型だったので、それをlong long に変更。 10 ./regex -file 3g.txt -sw doing -cpu 4 -> 7799680
17 (push は確認してから) 11 ./regex -file 3g.txt -sw doing -cpu 4 -dr -> 5190577
12
13 やっぱり 2GB の壁くさい
14
15 segmentation fault が起こらないということは、ちゃんと allocate はされているっぽい。
16 ということは、やはり read 関係のどこかで 2GB 制限がかかってるのではないか。
17 (API を int -> long long にかえないといけない部分がまだ存在すると思われる。
18
19 divide read mode 時、wbuf の address の動きが怪しい
20 long だと MAX が約2GB。つまりどこかで long long にしないとこれは直らない。