On Sat, Jul 27, 2013 at 5:33 AM, Roland Mainz <[email protected]> wrote:
> On Sun, Jul 14, 2013 at 6:16 PM, Roland Mainz <[email protected]> 
> wrote:
>> During benchmarking I noticed an issue with AST grep(1) - it uses
>> |mmap()| but doesn't use |madvise(..., MADV_SEQUENTIAL, ...)| ... I
>> digged a little bit around in the code and noticed that while sfio has
>> |SF_SEQUENTIAL| there is no way to set it at |sfopen()| time...
>>
>> ... what would be the best place to fix it ? Putting it into
>> src/lib/libcmd/grep.c doesn't help other cases where huge regex data
>> are processed and there are cases when |mmap()| may not work (e.g.
>> filesystem doesn't support |mmap()| or chunk size is too small) but we
>> could still use |posix_fadvise(..., POSIX_FADV_SEQUENTIAL)| ... would
>> be a new |sfioadvise()| call be a good idea ?
>>
>> ** Notes:
>> - The the performance improvement measured via the "time"/"timex" may
>> be be minor for idle systems because |madvise(..., MADV_SEQUENTIAL,
>> ...)| (and to a lesser degree |posix_fadvise(...,
>> POSIX_FADV_SEQUENTIAL)|) affects the time needed until an I/O page
>> gets re-used for something else. The trouble is that there are
>> multiple ways to get them re-used... and in some cases (like Solaris
>>>= 11.1) it may even be a seperate "CPU strand" (on the same CPU
>> (sharing the same MMU)) which does the reusing (Solaris >= 11.1
>> offloaded some VM tasks to different strands to make applications
>> faster by parallising the VM work).
>> Or short: The performance improvement is for a complete system (e.g.
>> being able to process more data) but may have little effect for an
>> individual process run (except when the VM system is already under
>> pressure... then the performance benefit can be huge).
>
> Erm... ping!
>
> ... can we please discuss |sfioadvise()| before ast-ksh enters the
> beta phase ? IMO sfio should stop guessing about the access patterns
> and accept hints via |sfioadvise()| ...

Cam we please get this issue fixed _before_ ksh93v- goes into the
"beta" phase ? At least both grep(1) and join(1) could benefit from a
way to explicit pick |mmap()| I/O support (join(1) does... but it
doesn't look "pretty") ...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers

Reply via email to