01:37.39 |
brlcad |
huh? who wha? |
01:39.36 |
dtidrow_work |
lol |
01:43.08 |
*** join/#brlcad sand
(n=sand@a88-112-54-131.elisa-laajakaista.fi) |
01:49.14 |
Maloeran |
Erik, by inserting
if(!(rand()&0xFF))sleep(0); in every blank line of the prep in
all functions, I'm able to reproduce your bugs |
01:49.22 |
brlcad |
hehe |
01:49.50 |
dtidrow_work |
is somebody being sarcastic? |
01:50.06 |
brlcad |
i think he means it |
01:56.02 |
Maloeran |
Yes I'm serious, nothing less drastic managed
to trigger the bug |
01:58.58 |
dtidrow_work |
crazy |
02:52.01 |
``Erik |
heh |
02:53.13 |
``Erik |
dti: multithreaded apps that are very cpu
bound when running on a single core have a behavior of saturating
their quanta (therefore lucking out with exclusive access to the
regions that should be locked) |
02:53.36 |
``Erik |
but the second you bring that app to a machine
with multiple cores and caches, shit goes bad... |
02:54.17 |
``Erik |
sleep(0) just surrenders the quanta, so
shoving it in some place "weird" can produce some of the side
effects you see from having multiple alu's |
03:39.06 |
Maloeran |
``Erik, just sleep()s weren't enough, I needed
the rand() |
03:39.24 |
Maloeran |
And I needed a whole lot of them saturated all
over the code :) |
03:40.40 |
Maloeran |
It should be shortly fixed now, so I can
finally move on to... actual work |
04:51.41 |
*** join/#brlcad dtidrow_
(n=dtidrow@c-69-255-182-248.hsd1.va.comcast.net) |
05:38.03 |
*** join/#brlcad CIA-5
(i=cia@cia.navi.cx) |
06:38.42 |
Maloeran |
Ah, I just woke up at 2h with the bug in mind
and finally understood |
06:40.55 |
Maloeran |
I'll share the explanation tomorrow if you are
curious Erik, that was... subtle. Hrm okay, I'll go sleep on the
fix now |
07:10.33 |
*** join/#brlcad clock_
(i=clock@84-72-63-63.dclient.hispeed.ch) |
08:01.57 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
08:15.45 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
09:35.40 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
09:56.56 |
brlcad |
good times |
10:23.01 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
11:38.51 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
11:46.33 |
*** join/#brlcad clock___
(n=clock@zux221-122-143.adsl.green.ch) |
11:59.26 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
12:29.29 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
12:49.25 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
13:04.14 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
13:29.13 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
14:18.36 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
15:25.30 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
15:32.14 |
*** join/#brlcad clock___
(n=clock@zux221-122-143.adsl.green.ch) |
15:50.19 |
Maloeran |
Gah, death to gprof with its complete lack of
support for both threads and dlopen'ed libraries. Writing a
profiler with GCC's -finstrument-functions seems so easy
anyway |
15:50.53 |
Maloeran |
Won't be a match for the all mighty Shark, but
gprof isn't hard to beat |
15:55.13 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
16:15.48 |
brlcad |
mm.. Shark |
16:15.54 |
brlcad |
shark is sweet |
16:22.40 |
dtidrow_work |
? |
16:22.43 |
dtidrow_work |
what is it? |
16:22.58 |
Maloeran |
The OSX profiler, amazingly good |
16:42.01 |
dtidrow_work |
ah |
16:43.42 |
*** join/#brlcad docelic
(i=docelic@ri02-209.dialin.iskon.hr) |
16:50.10 |
brlcad |
one of the best profilers around, free or
otherwise (and it's free) |
16:51.59 |
brlcad |
part of the apple "CHUD" tools (Computer
Hardware Understanding Developer Tools) |
16:52.36 |
``Erik |
http://www.macworld.com/news/2006/12/12/allchin/index.php |
16:52.37 |
``Erik |
heh |
16:54.17 |
brlcad |
http://developer.apple.com/tools/shark_optimize.html |
16:54.35 |
brlcad |
and http://developer.apple.com/tools/sharkoptimize.html |
16:54.46 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
16:54.49 |
brlcad |
and one i've not even tried yet..
http://developer.apple.com/tools/performance/optimizingwithsystemtrace.html |
16:57.51 |
Maloeran |
I read posts in mailing lists from 1999 to
2006 about gprof/glibc/kernel people blaming each other for the
failures of gprof |
16:58.03 |
Maloeran |
No one agrees on what the "best" way is, so
nothing gets done. Lovely! |
17:00.12 |
brlcad |
shark gets a lot of what it gets, erm most,
from the system performance counters on the hardware |
17:00.25 |
brlcad |
which while not standard on x86 hardware, is
on most newer systems |
17:00.37 |
brlcad |
but still something gprof knows pretty much
nothing about |
17:01.19 |
brlcad |
projects like oprofile seem to be doing better
at using the performance counters, but still have a ways to
go |
17:01.20 |
Maloeran |
Yes I know. All I'm asking for is the sum of
the time spent in functions, and I can't get that |
17:01.45 |
brlcad |
oprofile might do that much for you |
17:01.52 |
brlcad |
http://oprofile.sourceforge.net/about/ |
17:02.05 |
Maloeran |
Oprofile is system-wide and it requires a
kernel driver |
17:02.24 |
Maloeran |
I didn't look further as it seemed overkill
and inappropriate |
17:02.32 |
brlcad |
kernel module, you insmod it |
17:02.46 |
brlcad |
it gives the numbers you want: http://oprofile.sourceforge.net/examples/ |
17:03.21 |
``Erik |
is shark on the intel chips yet? |
17:03.32 |
brlcad |
years ago afaik |
17:04.50 |
Maloeran |
Hrmph, then it's no good to see the reasons
behind the prep's poor scalability |
17:05.40 |
brlcad |
what's no good? |
17:06.11 |
brlcad |
the chud tools have been available on the
intel macs since the early beta days |
17:06.23 |
Maloeran |
I mean if Erik can't run it by lack of
root |
17:06.33 |
brlcad |
ahh |
17:06.49 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
17:07.27 |
brlcad |
he probably just needs to make a phone call or
send an e-mail and that problem could probably go away |
17:10.36 |
Maloeran |
Ahah, about the name of the GNU BFD library :
"The name came from a conversation David Wallace was having with
Richard Stallman about the library: RMS said that it would be quite
hard--David said "BFD". Stallman was right, but the name
stuck." |
17:12.29 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
17:13.41 |
``Erik |
interesting, um, view choices |
17:28.17 |
*** join/#brlcad clock__
(n=clock@zux221-122-143.adsl.green.ch) |
17:34.34 |
*** join/#brlcad clock___
(n=clock@zux221-122-143.adsl.green.ch) |
17:40.00 |
*** join/#brlcad clock____
(n=clock@zux221-122-143.adsl.green.ch) |
17:46.24 |
Maloeran |
oprofile: configure: error: Unsupported
kernel version with 2.6.17 |
17:47.20 |
Maloeran |
Enough of this mess, I'll write a profiler in
spare time |
18:02.09 |
*** join/#brlcad clock_
(n=clock@zux221-122-143.adsl.green.ch) |
18:32.39 |
``Erik |
commitcommitcommit |
18:32.42 |
``Erik |
ho hum |
18:46.57 |
*** part/#brlcad sand
(n=sand@a88-112-54-131.elisa-laajakaista.fi) |
18:50.25 |
Maloeran |
Are you sure it got enough ram for the
truck? |
18:50.47 |
Maloeran |
It doesn't take that much once cached, but the
prep climbs high |
20:26.48 |
``Erik |
just the file |
20:27.29 |
``Erik |
I'd hope a gig is enough... I mean, yeah, it's
a slow old machine, but it's a slow old unix machine, not one of
these pissant desktop crappers |
20:30.53 |
Maloeran |
Ah, neat. I'm not qualifying anything with 1gb
ram of "crusty old" yet |
20:34.15 |
``Erik |
hrm |
20:34.31 |
``Erik |
this machine might be as old as your 486
heh |
20:35.22 |
Maloeran |
Oh :) |
20:37.54 |
``Erik |
hm, no, I htink it's only 11 yrs old |
20:40.30 |
``Erik |
hrmmmm, which is about when pc's were in the
8-16mb range |
20:40.31 |
``Erik |
:) |
20:40.43 |
Maloeran |
It really amuses me to think that back on that
486, I could barely perform 5-6 fast assembly instructions per
pixel to get smooth rendering |
20:40.58 |
Maloeran |
Now, tracing a ray for every pixel against
260k triangles? Ah, no problem |
20:41.10 |
``Erik |
heh |
20:41.25 |
``Erik |
you should install 'vice' and code on that
some :) I learned a lot on a c64 |
20:41.59 |
``Erik |
'kernel' hacking, even, writing mnems (halfway
between straight machine code and asm) and pointing the interrupt
vector to my new code |
20:42.46 |
Maloeran |
I love optimisation but I'm not too fond of OS
stuff. I had written a primitive 32 bits DOS on that 486 |
20:43.05 |
Maloeran |
It could run *some* DOS software within a very
primitive multitasking 32 bits OS |
20:45.36 |
Maloeran |
I still keep pieces of old code... Hum, my old
DOS isometric tile rendering engine with lighting optimized in
assembly for 486/Pentium, I got to read that again
sometimes |
20:46.05 |
Maloeran |
:( How so, why? |
20:46.13 |
``Erik |
was moving several thousand miles |
20:46.29 |
``Erik |
so dumped a lot of unnecessary
possessions |
20:46.30 |
Maloeran |
Well, disks, you can at least bring
that |
20:46.49 |
``Erik |
yeah, but without the drives and computers,
they're useless |
20:47.40 |
Maloeran |
The time I lost most of my code was when my
father "threw" me out of the house for quitting college, many years
ago |
20:47.47 |
``Erik |
(back then, not only did every os have its own
filesystem, but the very nature of disk layout was different
bewteen machines and needed their own drives) |
20:48.19 |
``Erik |
so even if you wrote an appleII or dos program
to read a c64 fs, it'd still just get garbage off of the
media |
20:48.42 |
Maloeran |
Really? I thought it was possible for some
drives, not x86 floppy drives though |
20:48.45 |
``Erik |
I've seen some hacks for making hw do
unnatural things like that, yeah |
20:49.03 |
``Erik |
but *shrug* hadn't when I pitched the
machines... |
20:49.24 |
``Erik |
yard sale, actually, didn't throw them out,
heh |
20:49.32 |
``Erik |
my mom sold 'em :/ |
20:49.36 |
Maloeran |
You didn't bury them in the woods and marked
down the gps coodinates or anything? :) |
20:49.40 |
Maloeran |
Ew. |
20:52.30 |
Maloeran |
Ah, old good times on that 486... Adding one
fast assembly instruction per pixel could reduce performance by
some 20%, that was amusing optimisation |
21:08.09 |
*** join/#brlcad docelic
(i=docelic@ri02-067.dialin.iskon.hr) |
21:49.41 |
*** join/#brlcad clock_
(i=clock@84-72-95-205.dclient.hispeed.ch) |