irclog2html for #brlcad on 20061209

04:01.44 *** join/#brlcad brlcad (n=sean@bz.bzflag.bz) [NETSPLIT VICTIM]
04:01.44 *** join/#brlcad Maloeran (n=rayforce@daddelbande.de) [NETSPLIT VICTIM]
04:36.08 *** mode/#brlcad [+o brlcad] by ChanServ
06:14.44 *** join/#brlcad ibot (i=ibot@rikers.org)
06:53.04 *** join/#brlcad SWPadnos (n=Me@dsl245.esjtvtli.sover.net)
07:13.17 *** join/#brlcad clock_ (i=clock@84-72-94-51.dclient.hispeed.ch)
12:05.33 *** join/#brlcad docelic (i=docelic@ri02-129.dialin.iskon.hr)
15:37.22 *** join/#brlcad Twingy (n=justin@74.92.144.217)
15:48.05 Maloeran Doh! So that's the threaded prep bug
15:50.57 ``Erik heh
15:50.58 ``Erik what was it? :D
15:51.04 ``Erik bad locking?
15:55.45 Maloeran Basically, yes. In some specific circumstances, it was launching jobs that it shouldn't have
16:03.56 ``Erik ah
16:18.42 Maloeran Finally you'll be able to tell me how the stuff scales, prep and tracing :)
16:21.51 ``Erik but I still have to hack the config file to define the # of threads?
16:22.20 ``Erik libbu has a function to report # of cores, might as well link against it since eventually it'll be shoved into that package
16:23.50 Maloeran The define is in rfdemo.c, not the config.h file. Would be easy to specify that by command line or something
16:24.07 Maloeran With glibc, get_nprocs() can be used to get the count of processors
16:25.24 Maloeran rtContextEnv( RT_THREAD_COUNT_HINT, threadcount, 0 ) <-- rfdemo.c, specifies the count of threads
18:02.01 *** join/#brlcad clock_ (i=clock@84-72-94-51.dclient.hispeed.ch)
18:11.19 ``Erik not every os has glibc... in fact, I can only think of one that does...
18:11.32 ``Erik the libbu one calls get_nprocs() on linux
18:11.38 ``Erik performs the right sysctl on bsd
18:11.39 ``Erik etc
18:11.47 ``Erik works everywhere arl cares about... :)
18:12.18 ``Erik (lots of OS abstraction in the BRL-CAD (happy, brlcad?) libraries)
18:31.03 Maloeran I get the idea, that belongs outside the raytracing library anyhow, in the rfdemo files
18:35.30 Maloeran Neat, you support some exotic platforms in there ;)
18:53.39 ``Erik heh
18:53.48 ``Erik looking at the old vax/vms stuff? or the cray stuff?
18:54.20 ``Erik brlcad cranked up a netbsd install on a vms11/70 I think in simh to make sure the product still works there... a bit extreme :)
18:55.00 ``Erik <-- has teh top plate of a pdp11/70 (pre-vax dec hw) on his windows machine... windows make that smoking machine almost as useful as an old pdp11
18:55.05 ``Erik makes
18:58.53 Maloeran Eheh, very neat
19:00.25 Maloeran I suppose there's no harm in just leaving support for these prehistoric platforms there, you can throw it out if it ever gets in the way
19:01.36 ``Erik heh
19:02.35 ``Erik and I think that too much code is pitiful and unacceptable in the quality aspect
19:03.04 ``Erik take a look at linux kernel code... it's obvious how little thinking was put into portability, and how poorly the hacks to "make it work" here and there are
19:03.22 ``Erik if you only ever support the specific platform and architecture, yes, you can make those assumptions.
19:03.40 Maloeran Yes, but I would say it's about "making it work fast"
19:03.50 ``Erik if you code in that fashion, the second you adjust for another platform, you probably LOSE efficiency as the 'to cope with' hacks get introduced
19:04.04 Maloeran It's an operating system kernel, I would sacrifice design portability for performance
19:04.12 ``Erik heh
19:04.18 ``Erik well, suppose you have two choices
19:04.43 ``Erik you can make a generic thing that works everywhere, but it's only 95% as the optimal on your development machine...
19:04.49 ``Erik so you implement the 100% optimal
19:04.53 Maloeran Linux has big chunks of code for each arch it supports, specifically tailored for the architecture
19:04.54 ``Erik now someone else has different hw
19:05.15 ``Erik so they put in if(thisarch) {do this} else {dothis}
19:05.24 Maloeran Solaris did that, very portable code, and its deserves the Slowaris nickname
19:05.49 ``Erik and someone else has different hw, so now it's if(thisarch) {dothis} else if(thisarch) {dothis} else {dothis}
19:05.55 ``Erik heh, actually
19:06.03 ``Erik solaris was designed to be efficient on usparc
19:06.06 ``Erik and nothing touches it there
19:06.11 ``Erik 'slowaris' is only for the x86 port
19:06.30 ``Erik because it wasn't designed with portability in mind... it was designed for insane efficiency... on a usparc/sbus machine.
19:06.34 Maloeran Ah I see. I did read some comparisons between Linux and Solaris code design
19:06.50 ``Erik solaris is *VERY* tuned to usparc
19:06.54 ``Erik linux is *VERY* tuned to x86
19:07.02 ``Erik the minute you stray from their native environment, they SUCK
19:07.03 ``Erik :(
19:07.46 Maloeran I thought the Linux kernel had huge blocks of arch-specific code, taillored for performance
19:08.02 Maloeran While Solaris had elegant layers of abstractions, making it fairly portable, and slow
19:08.35 ``Erik solaris is well architected, but x86 was a half-assed afterthough
19:08.55 ``Erik the focus was always the latest line of sun hw
19:09.01 ``Erik m68k, then sparc, then ultrasparc
19:09.19 Maloeran Well, you know me, I'll sacrifice code elegance for performance any time. For a kernel, it matters a lot
19:09.26 ``Erik heh
19:09.37 ``Erik in the immediate term, that's acceptable
19:09.44 ``Erik in the long term, it's what leads to shit code
19:09.46 ``Erik like the linux kenrel
19:09.49 ``Erik kernel
19:09.55 ``Erik goto hell, jump tables out the wazoo
19:10.02 ``Erik hack upon hack upon hack
19:10.04 ``Erik it's... sad.
19:10.12 Maloeran I wouldn't qualify the Linux kernel of "shit code"
19:10.23 ``Erik uh
19:10.24 ``Erik if you don
19:10.34 ``Erik if you don't, then you hav enot looked at much kernel code.
19:10.48 ``Erik seriously, dude, I'm BOGGLED that it works AT ALL
19:11.03 Maloeran The parts I read were far better than most other open source code I have seen
19:11.11 ``Erik hm
19:11.17 ``Erik the networking stack is semi-decent
19:11.25 ``Erik the scheduler was just gutted and replaced, it's kinda ok
19:11.42 ``Erik memory management, file system, drivers... horrible
19:11.53 *** join/#brlcad CIA-5 (i=cia@cia.navi.cx)
19:12.10 Maloeran Memory management may be "horrible" code-wise, but it's still efficient
19:12.41 ``Erik efficient on hw with the i386 mmu
19:12.42 ``Erik sure
19:13.02 Maloeran Of course so :)
19:13.06 ``Erik on an alpha? ppc/sp? mips? sparc? vm? of course not
19:13.16 Maloeran There are paths for other architectures, but I haven't read them
19:13.26 Maloeran I guess far less work was put on them
19:13.32 ``Erik the very *NOTION* that there are other paths
19:13.34 ``Erik is a hit.
19:13.37 ``Erik :(
19:13.52 Maloeran It's a compilation time "path", it's only a hit on the time of the programmers
19:14.04 ``Erik of course, the performance related stuff I tend to do tend to be rare runs
19:14.16 ``Erik so in computing total cost, developer time is in there
19:14.18 Maloeran And since it's a kernel, I'm not against having a whole specific path optimized for each architecture
19:14.26 ``Erik well
19:14.43 ``Erik if it were defined sufficiently that each arch could be a totally independant project, great
19:15.08 ``Erik 99.999% of code A) is not that well defined and B) does not have the resource allotment for each plausible arch/os
19:15.14 Maloeran Not independant, most of the code can still be shared, but very distinct modules yes
19:15.30 ``Erik independant projects can share
19:15.41 ``Erik I mean, if you were in tune to the bsd family...
19:15.54 ``Erik freebsd, openbsd, netbsd,and dragonfly are all very much distinct projects
19:15.56 ``Erik but share a LOT
19:16.11 ``Erik all with different focii
19:16.48 Maloeran Well, what can I see, Linux is weaker than alternative on certain architectures. I use the architectures that offer the best performance/cost ratio, as most of the world, and it's ia32/amd64
19:16.57 Maloeran can I say*
19:18.16 ``Erik for both administrative effort and for 'well written' code efficiency :/
19:18.38 ``Erik understanding the semantics of the fundamentals helps
19:19.03 ``Erik like groking the difference between phkmalloc and dlmalloc
19:19.42 ``Erik (phk allocs and frees REAL fast, and guarantees contiguous memory... dlmalloc is just a hair slower on alloc and free, but way faster on realloc)
19:19.55 ``Erik bsd is phkmalloc, linux is dlmalloc
19:19.56 ``Erik :)
19:20.15 ``Erik dlmalloc does *NOT* guarantee contiguous memory, physical pages are all over the place ...
19:20.25 Maloeran I thought the BSD free() was a bit slow though, perhaps just aggressive on releasing memory pages
19:21.01 Maloeran And the OSX free() sure is terribly slow :), one is better write a wrapper
19:21.33 ``Erik like, uh, *nix filesystems fight for contiguous data... where windows is all over teh place... linux wire memory is all over the place (fragmented... assume the process closes before issues happen)
19:21.54 ``Erik I think linux and fbsd free memory asynchronously, where osX is synchronous
19:22.18 ``Erik when you free on linux and fbsd, sometime, that memory will be available.. eventually... on osX, that memory is available when the function returns. Damnit.
19:22.26 ``Erik I'd have to doublecheck to be sure
19:22.31 Maloeran Continuity matters for file systems, but for memory? Processors don't really care if two pages are next to each other or not, the translation takes care of that
19:22.40 ``Erik um
19:22.48 ``Erik most cpu's have a mandatory read-ahead
19:23.06 ``Erik so, uh
19:23.06 ``Erik if you access memory linearly, it DOES matter
19:23.10 Maloeran Yes, and that read-ahead relies on the process address space, not the translated addresses
19:23.24 ``Erik hrm, true
19:23.40 ``Erik :/
19:23.51 ``Erik wench on the phone, code editor with ruby code up, ... etc
19:24.04 Maloeran I guess continuous memory pages would still be better in other circumstances though. DMA'ing to devices and so on
19:24.22 Maloeran Eh, all right. I need to go eat breakfast before it closes at 15h anyhow
19:24.43 ``Erik hehehe :)
19:25.27 ``Erik later, duder
19:43.09 *** join/#brlcad docelic (i=docelic@ri02-010.dialin.iskon.hr)
21:16.16 *** join/#brlcad docelic (i=docelic@ri02-226.dialin.iskon.hr)
21:55.36 *** join/#brlcad sand (n=sand@a88-112-54-131.elisa-laajakaista.fi)
21:55.41 sand heya
22:15.33 brlcad hello, ...back later...
22:20.29 sand what's the licence for brlcad?
22:29.41 Maloeran LGPL
22:30.25 Maloeran Although some pieces are BSD I think
22:33.53 sand cool
22:33.56 sand why is it not in debian?
22:33.58 sand >P
22:36.00 Maloeran No idea. It isn't in Gentoo either, but it's fairly simple to install
22:57.35 brlcad sand: only because nobody from those projects has completed the effort mostly -- there are partial efforts in place for both debian and gentoo
23:04.16 sand ah
23:59.38 ``Erik if a debian or gentoo porter were looking to get it hooked up, we'd naturally offer to help how we can... I do the freebsd port, so I can provide a file listing, etc

Generated by irclog2html.pl by Jeff Waugh - find it at freshmeat.net! Modified by Tim Riker to work with blootbot logs, split per channel, etc.