Re: PosixError.SysCall.simpleResultAux
Matthew Fluet <[email protected]> Tue, 23 Aug 2016 21:06:58 -0400
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <CAMrhFL7wsqrF6js2kPdXBWJWzV4CybrW7ytRsYBxAda-ZWwM8A@mail.gmail.com> |
On Tue, Aug 23, 2016 at 7:31 AM, Kostirya <[email protected]> wrote: > Tell me, please, why PosixError.SysCall.simpleResultAux takes large percent > in the results of profiling: > > function cur > ------------------------------------ ----- > PosixError.SysCall.simpleResultAux 28.0% > Sequence.concat 14.0% > Integer.fmt 12.0% > <gc> 6.0% > EV.kevent_wait 6.0% > EV.kevent_change 6.0% > ... > > This is event driven server. > In addition to work with string and sockets, the server use FFI call for > kevent (bsd). > > And what I may do to decrease this value? PosixError.SysCall.simpleResultAux is defined at https://github.com/MLton/mlton/blob/master/basis-library/posix/error.sml#L291. Essentially, it is used as a wrapper for any Posix / C library function that returns -1 on error and sets errno. The fact that it is taking a large percent of the running time is probably indicative of the fact that the program is often blocking in a system call; that would seem to be consistent with an event driven server program. To investigate further, you could compile with "-profile-include '.*'". By default, MLton excludes the Basis Library implementation from profiling; really, this simply means that profiling will attribute time to the outermost Basis Library function, rather than inner functions. With "-profile-include '.*'", you override that default and MLton will include the Basis Library implementation with profiling. That might reveal which function is being called by PosixError.SysCall.simpleResultAux. Also, you could compile with "-profile-stack true", which will attribute time to all functions on the stack; see http://mlton.org/ProfilingTheStack for more details. This might also help to understand the program. Finally, the cost of PosixError.SysCall.simpleResultAux might be inflated due to profiling. Although MLton installs with profiling signal handler with "SA_RESTART" (indicating that interrupted system calls should be automatically restarted), it may be that a system call is being repeatedly interrupted by the profiling signal and its resumption is contributing to the running time. -- You received this message because you are subscribed to the Google Groups "MLton-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. ------------------------------------------------------------------------------