| 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 |