Messages in this thread | | | Date | Thu, 17 Jan 2008 12:23:16 +0900 | From | KOSAKI Motohiro <> | Subject | Re: [RFC] mmaped copy too slow? |
| |
Hi
> > One thing you could also try is to pass MAP_POPULATE to mmap so that the > > page tables are filled in at the time of the mmap, avoiding a lot of > > page faults later. > > > > OK, I will test your idea and report about tomorrow. > but I don't think page fault is major performance impact.
I got more interesting result :) MAP_POPULATE is harmful result at large copy.
1G copy elapse(sec) -------------------------------------------- mmap 71.54 mmap + madvice 69.63 mmap + populate 100.87 mmap + populate + madvice 101.16
more detail: time command output of mmap copy 0.50user 3.59system 1:11.54elapsed 5%CPU (0avgtext+0avgdata 0maxresident)k 2101192inputs+2097160outputs (32776major+491573minor)pagefaults 0swaps
time command output of mmap+populate copy 0.53user 5.13system 1:40.87elapsed 5%CPU (0avgtext+0avgdata 0maxresident)k 4200808inputs+2097160outputs (49164major+737340minor)pagefaults 0swaps
input blocks increase about x2. in fact, mmap(MAP_POPULATE) read disk to memory and drop it just after, thus read again.
of cource, when copy file size is enough small, MAP_POPULATE is effective.
100M copy elapse(sec) -------------------------------------------- mmap 7.38 mmap + madvice 7.29 mmap + populate 7.13 mmap + populate + madvice 6.65
- kosaki
| |