On Thu, Aug 14, 2008 at 4:43 AM, Gwern Branwen <[EMAIL PROTECTED]> wrote: > On 2008.08.13 17:17:44 +0400, Dmitry Kurochkin <[EMAIL PROTECTED]> scribbled > 1.9K characters: >> On Wed, Aug 13, 2008 at 4:58 PM, Gwern Branwen <[EMAIL PROTECTED]> wrote: > ,,, >> > The bad news though is that this seems to completely break profiling >> > support under GHC 6.8.2. >> > >> > That is, >> > >> > $ make clean && ./configre --prefix=/home/gwern/bin --enable-profile >> > --with-curl-pipelining && make install -j10 >> > >> > leads to: >> > >> > [EMAIL PROTECTED]:16499~>http_proxy="" HTTP_PROXY="" =darcs get >> > http://allmydata.org/source/tahoe/trunk [ 8:56AM] >> > >> > darcs failed: Not a repository: http://allmydata.org/source/tahoe/trunk >> > (RTS doesn't support multiple OS threads (use ghc -threaded when linking)) >> > >> > This may or may not be a 6.8.2 specific issue, being unable to compile >> > with profiling and threading, but it's definitely a problem of interest to >> > me. If it got fixed in 6.8.3, maybe we don't want to do anything (but we'd >> > still need some doc mentions, I think). >> >> I never did profiling but looks like the problem is that URL module >> now uses forkOS (and blocks in select() there for curl at least). I >> have found this in GHC 6.8.3 release notes[1]: > > Actually, while we're on the topic: why does URL.hs now use forkOS? Darcs > uses forkIO, usually, which is the standard Haskell practice. It can't be for > performance: I replaced forkOS with forkIO and tested it with 4 darcs gets of > the Tahoe repo, and they all clocked in at 24-27 minutes (the same as with > forkOS).
That is because we do foreign calls that block. AFAIK if we use unbound threads (forkIO) all haskell threads are halt during blocking syscalls from foreign functions. And that is not what we want. Regards, Dmitry > >> # You can now use the -prof and -threaded flags together, although you >> cannot also use +RTS -N2. >> >> Does this fix the problem? There is no GHC 6.8.3 in debian at the >> moment. And I do not feel like compiling it by hand. >> >> Regards, >> Dmitry >> >> [1] http://www.haskell.org/ghc/docs/6.8.3/html/users_guide/release-6-8-3.html > > That may've been what I'm thinking of. I don't have 6.8.3 in Ubuntu either. > So what's the thing to do? Just leave it in the documentation for that rare > developer who wants to profile? ('Warning, threading and profiling are > mutually exclusive in 6.8.2 - that means pipelining too.') Add some (more) > configure checks? > > -- > gwern > SDIS 36800 counter watchers WANK captain CTP GNU Keyer my > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > > iD8DBQFIo3+zvpDo5Pfl1oIRCthiAJ9SVUynxvfrh7crmQkAQHgtnhgSbACfQ9Sd > U/uD2/uL8/i/iqKY0GQUzBo= > =9TmN > -----END PGP SIGNATURE----- > > _______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
