#emc | Logs for 2006-10-30

Back
[11:43:20] <Lerneaen_Hydra> woo
[11:43:24] <Lerneaen_Hydra> * Lerneaen_Hydra pokes logger_aj
[11:43:42] <Lerneaen_Hydra> * Lerneaen_Hydra would not be surprised if that made logger_aj disconnect
[11:48:48] <anonimasu> hehe
[11:48:50] <anonimasu> me neither
[11:52:02] <alex_joni> heh
[12:21:11] <alex_joni> * alex_joni yawns
[12:22:37] <anonimasu> * anonimasu yawns
[12:25:33] <anonimasu> im tired :/
[12:25:42] <anonimasu> and there's chaos around my desk.
[12:29:13] <Lerneaen_Hydra> anonimasu: I read that as "there's cho around my desk"
[12:29:20] <Lerneaen_Hydra> which was a bit unexpected
[12:29:51] <anonimasu> chaos
[12:30:51] <Lerneaen_Hydra> (cho is a relatively unknown character in a game called Riven, based on the myst series)
[12:33:17] <anonimasu> h
[12:34:54] <anonimasu> ah
[12:34:56] <anonimasu> :)
[12:45:46] <jepler> cradek: what problem did the 'glob' cause?
[12:46:06] <Lerneaen_Hydra> hi jepler
[12:46:09] <jepler> hi Lerneaen_Hydra
[12:46:24] <Lerneaen_Hydra> anything interesting happening?
[12:47:15] <alex_joni> jepler: it stopped working :)
[12:47:35] <alex_joni> jepler: you're up early today
[12:48:06] <jepler> alex_joni: am I?
[12:48:38] <alex_joni> what time is it there?
[12:48:44] <jepler> 6:48
[12:48:51] <alex_joni> early :)
[12:49:24] <alex_joni> at least for me
[12:49:41] <Lerneaen_Hydra> O.O
[12:49:45] <Lerneaen_Hydra> far too early
[12:50:13] <Lerneaen_Hydra> * Lerneaen_Hydra does not like thursdays, when he has to get up at 6:20
[12:52:47] <jepler> oh -- it's $(wildcard) not $(glob)
[12:52:56] <jepler> but make isn't kind enough to tell you that
[12:55:39] <jepler> and I was working with a fully-made tree so I didn't notice
[12:55:42] <CIA-8> 03jepler 07HEAD * 10emc2/src/Makefile: second try to reduce warnings in --debug about nonexistent Submakefiles
[12:59:16] <jepler> http://www.popsci.com/popsci/how20/3a9a75733cf0e010vgnvcm1000004eecbccdrcrd.html
[13:01:42] <skunkworks> I love this quote - 'In the periodic table, as in politics, the unstable elements tend to hang out at the far left and the far right.'
[13:02:16] <anonimasu> 3hm
[13:02:32] <anonimasu> my simple rs232 thing turned out with a queue handler :/
[13:03:09] <anonimasu> ack!"
[13:04:45] <Lerneaen_Hydra> jepler: neat. do you think the salt was gaseous or just as small particles?
[13:05:04] <Lerneaen_Hydra> iirc nacl boils at ridiculously high temperatures
[13:05:12] <Lerneaen_Hydra> so probably just small particles
[13:05:44] <Lerneaen_Hydra> hmm, apparently it boils at only 1500°C, which isn't all that high
[13:18:36] <jepler> Lerneaen_Hydra: no idea
[13:20:23] <alex_joni> * alex_joni can't wait to get home :)
[13:22:29] <alex_joni> jepler: what was that about wiki.linuxcnc.org ?
[13:23:08] <anonimasu> alex_joni: agreed
[13:23:58] <jepler> alex_joni: the redirect from / should be to /cgi-bin/emcinfo.pl (no trailing slash)
[13:24:11] <jepler> with the trailing slash, the links end up being to /cgi-bin/emcinfo.pl/emcinfo.pl?PageName
[13:25:07] <alex_joni> better now?
[13:27:22] <jepler> looks good to me
[13:27:42] <alex_joni> thanks for spotting it
[14:25:01] <jepler> I must not understand how "block dlete" works
[14:25:30] <cradek> alex says it deletes at interp time so you pretty much have to choose before you start running
[14:26:40] <jepler> I wrote this program: http://pastebin.ca/229179
[14:26:59] <jepler> when the block delete switch is enabled, it moves to X0Y0Z0 and that's it
[14:27:32] <cradek> well that doesn't seem right to me either.
[14:27:41] <jepler> but I expect it to go to Y1
[14:27:53] <cradek> sure
[14:27:56] <anonimasu> hm
[14:28:02] <anonimasu> how fast can you spin a stepper?
[14:28:14] <cradek> how fast can you drive a car?
[14:28:17] <anonimasu> if you do have enough torque for your load at a specified rpm..
[14:28:31] <cradek> depends on the motor I'm sure
[14:29:04] <anonimasu> well the graphs go to 7000
[14:30:19] <anonimasu> ah steps per sec..
[14:30:20] <anonimasu> not rpm
[14:30:40] <jepler> are you asking how many steps per second emc can generate without special hardware?
[14:30:51] <anonimasu> no.
[14:31:03] <anonimasu> I'm using a usc so I have no real limitation..
[14:33:09] <jepler> with usc, the next limit is either the decreasing torque curve, or in some cases the max step rate of the stepper driver. e.g., if STEP must be asserted for 4us and deasserted for 1us, then your max step rate is 1/5us = 200kHz
[14:33:19] <anonimasu> yeah
[14:33:39] <anonimasu> im trying to find a stepper with enough spec to move my Z axis to 2m/min..
[14:33:40] <jepler> (and if the driver can only generate symmetric step waveforms, 1/8us = 125kHz)
[14:33:53] <anonimasu> it's looking quite dark..
[14:34:29] <jepler> because of the required torque?
[14:34:33] <anonimasu> yeah
[14:34:44] <Lerneaen_Hydra> do you guys think 25000 cycles for a throttle control is enough for a device used relatively often?
[14:35:18] <jepler> $ units '25000/(100/day)' year
[14:35:18] <jepler> * 0.68447732
[14:35:46] <Lerneaen_Hydra> it's that value of 100 that I'm uncertain of
[14:36:09] <cradek> throttle on what?
[14:36:21] <Lerneaen_Hydra> that electric bike I'm doing
[14:36:43] <skunkworks> are we talking - chopping freqency?
[14:36:53] <cradek> on a car the throttle is continuously moving - don't know about your bike
[14:37:07] <skunkworks> ah - usage
[14:37:10] <skunkworks> n/m
[14:37:12] <Lerneaen_Hydra> http://www.vishay.com/docs/51037/pe30.pdf is the part (found it in a bag O.o )
[14:37:52] <Lerneaen_Hydra> cradek: yeah that's what I was thinking
[14:38:14] <cradek> why not just use it until it wears out, then replace it?
[14:38:53] <alex_joni> jepler: try setting block delete before loading the program
[14:39:07] <Lerneaen_Hydra> I've only got a few
[14:39:18] <Lerneaen_Hydra> and if it wears out after a week...
[14:39:33] <Lerneaen_Hydra> 25k doesn't sound like very much IMO
[14:39:50] <CIA-8> 03jepler 07HEAD * 10emc2/src/emc/usr_intf/axis/extensions/emcmodule.cc: support block delete and optional stop messages and stat buffer items
[14:42:15] <CIA-8> 03jepler 07HEAD * 10emc2/src/emc/usr_intf/axis/scripts/axis.py: expose block delete and optional stop to the GUI layer
[14:43:43] <CIA-8> 03jepler 07HEAD * 10emc2/share/axis/tcl/axis.tcl: block delete and optional stop menu items
[14:43:57] <cradek> yays
[14:44:56] <Lerneaen_Hydra> woo
[14:46:06] <alex_joni> yay
[14:46:22] <anonimasu> :)
[14:46:26] <anonimasu> nice
[14:48:18] <jepler> does "delta RT/RT 10%" mean that at 25000 cycles the resistance is less than 10% different than when the part was new? If so, you might get many more cycles than that before the throttle is unusable
[14:50:45] <Lerneaen_Hydra> jepler: sounds plausible
[14:50:48] <jepler> hi ray!
[14:50:59] <Lerneaen_Hydra> I'll just use it and hope for the best
[14:52:13] <Lerneaen_Hydra> the interesting thing is that it's military grade, must have been from some surplus place
[14:53:42] <rayh> Hi jeff
[14:53:47] <SWPadnos> hi guys
[14:54:53] <anonimasu> hey swp
[14:55:27] <rayh> Hi Steven.
[14:55:57] <SWPadnos> so - what do you do when a woodpecker decides that your house is a nice place to do his pecking?
[14:56:10] <anonimasu> shoot it..
[14:56:11] <SWPadnos> on the corner near your head, when you're sleeping
[14:56:18] <SWPadnos> ok, that's one option
[14:56:21] <anonimasu> though that's illegal.
[14:56:42] <SWPadnos> I suspect I'd have to discharge a firearm within 300 feet of a house, so yes, it's illegal
[14:57:18] <anonimasu> oh, not that, I think they are almost "extinct" or something like that
[14:57:20] <anonimasu> atleast here..
[14:58:01] <skunkworks> air rifle
[14:58:10] <rayh> Unless there are bugs under the siding this thing is probably sounding for a mate.
[14:58:24] <skunkworks> although it is probably a protected species
[15:00:17] <SWPadnos> well, there could be bugs under there - we have some carpenter ants we can't find any more
[15:01:58] <alex_joni> SWPadnos: go fsck it
[15:02:02] <SWPadnos> oh great - it probably is one of the protected species
[15:02:19] <SWPadnos> I think it's a Red Cockaded Woodpecker (it has a red tuft on top of its head)
[15:07:33] <lerman> Somone suggested to me that one way to get rid of woodpeckers is to hang a helium balloon so that it is next to the area in which it is pecking. Supposedly, the motion of the balloon will scare it away.
[15:07:50] <SWPadnos> hmmm - that's a good one to try
[15:08:18] <SWPadnos> I wonder how long a helium balloon would last outside in the Vermont fall/winter :)
[15:08:51] <lerman> I suspect that once it leaves, it will find other hunting grounds after a while.
[15:09:21] <skunkworks> definatly go with mylar
[15:09:54] <SWPadnos> maybe the mirrored surface will make it think there's some competition ;)
[15:30:34] <CIA-8> 03cradek 07HEAD * 10emc2/src/hal/components/counter.c: fix contradictory license notices
[15:31:45] <rayh> I had one that banged on a tin plate out on the power pole for several years.
[15:32:17] <SWPadnos_> I'm sure that was restful for you :)
[15:32:28] <SWPadnos_> at least they seem to operate mostly in the daytime
[15:32:40] <cradek> they're cool but they sure are loud
[15:33:50] <SWPadnos_> especially when they're about 4 feet from your head
[15:34:19] <rayh> That close suggests that this is a behavior that needs modification.
[15:34:26] <SWPadnos_> I agree :)
[15:35:35] <SWPadnos_> if he was pecking on a tree I wouldn't mind, but the fact that he's decided to put holes in our house has me annoyed
[15:39:09] <anonimasu> :)
[15:42:03] <anonimasu> are there any config issues that'll cause my circles to become jagged?
[15:42:49] <SWPadnos_> that all depends on how you mill them, I guess
[15:43:04] <anonimasu> g2/g3
[15:43:19] <SWPadnos_> ok, doing large parts of a circle, or many small arclets?
[15:43:26] <anonimasu> one large part..
[15:43:59] <SWPadnos_> and what do you mean by "jagged" (can you post a photo or drawing?)
[15:44:12] <anonimasu> they look
[15:44:14] <anonimasu> ---------
[15:44:28] <anonimasu> understand?
[15:44:38] <anonimasu> my phone & camera died last week
[15:44:43] <anonimasu> so I cant take pictures
[15:45:04] <anonimasu> ofcourse it could be a backslash issue, but I'm not certain
[15:45:36] <SWPadnos_> if there's "stuttering" around the whole circle, I'd suspect incorrect feed/speed
[15:45:50] <SWPadnos_> if it's just at direction reversals, then backlash could be a culprit
[15:45:56] <anonimasu> hm, it's all over
[15:46:05] <SWPadnos_> dull mill?
[15:46:08] <anonimasu> no
[15:46:25] <SWPadnos_> backlash in the machine can also cause stuttering around the circle, I think
[15:46:40] <SWPadnos_> since it's kind of an error bar around the expected position
[15:46:58] <anonimasu> it's really odd..
[15:47:16] <anonimasu> I made some parts and they were 0.00 from what I drew..
[15:47:29] <anonimasu> and that was with contouring a square..
[15:47:37] <anonimasu> if there was backslash it should have shown up
[15:48:02] <anonimasu> that's why im a bit perplexed
[15:48:21] <SWPadnos_> hmmm - me, too. you're running serrvos with geckos on the XY axes, right?
[15:48:27] <anonimasu> yes
[15:48:53] <SWPadnos_> is it 0.001mm jaggies, or 1mm jaggies ... ?
[15:49:01] <anonimasu> 1mm jaggies
[15:49:08] <anonimasu> brutal ones :)
[15:49:14] <SWPadnos_> PID tuning?
[15:49:27] <anonimasu> hm, no.. using the default USC pid tuning
[15:49:39] <SWPadnos_> that could be a wildly wrong oscillation around the ideal point
[15:49:40] <anonimasu> the diff between the emc1 config is I = 100
[15:49:56] <anonimasu> P=150
[15:49:58] <anonimasu> I=100
[15:49:59] <SWPadnos_> though the Ferror calc should pick up anything that bad
[15:50:00] <anonimasu> D=0
[15:50:08] <anonimasu> I've got my ferror very high
[15:50:08] <SWPadnos_> I=100 - that's way out there
[15:50:18] <anonimasu> let me double check..
[15:50:31] <SWPadnos_> maybe 0.100 is more appropriate
[15:51:03] <anonimasu> I didnt do pid tuning for trying out "HEAD"
[15:51:05] <anonimasu> so yeah.. might be it
[15:51:14] <anonimasu> * anonimasu feels stupid
[15:51:32] <SWPadnos_> the PID tuning shouldn't be different between HEAD and released EMC2
[15:51:47] <anonimasu> P = 150
[15:51:47] <anonimasu> I = 100
[15:51:47] <anonimasu> D = 0.1
[15:51:48] <anonimasu> heh
[15:52:04] <SWPadnos_> it'll also be different between EMC1 and EMC2 (for the USC), since the units that you're tuning have changed
[15:52:09] <cradek> you're using a software pid to run a hardware step generator to run servo drives that have another pid built in?
[15:52:17] <SWPadnos_> yes ;)
[15:52:18] <anonimasu> cradek: yes.
[15:52:28] <anonimasu> not optimal.
[15:52:31] <cradek> that sounds ... challenging
[15:52:40] <anonimasu> the geckos are quite nice to tune..
[15:53:12] <SWPadnos_> the Gecko PID won't go beyond ~4 steps error, in practice
[15:53:35] <anonimasu> im going to run feedback from the geckos later..
[15:53:37] <anonimasu> to the usc
[15:53:38] <SWPadnos_> and since there's no real feedback to the EMC2 PID, that error has no effect on its output
[15:53:43] <cradek> it's a shame to buy all that hardware and still not have closed loop operation
[15:54:29] <anonimasu> yeah
[15:54:34] <cradek> sorry, not what you want to hear right now
[15:55:11] <anonimasu> cradek: I'll fun the usc with feedback later on so..
[15:55:12] <anonimasu> :)
[15:55:14] <anonimasu> run..
[15:55:14] <SWPadnos_> the only thing the EMC2 PID does is correct for minor errors in the actual step frequency that the USC generates
[15:55:47] <SWPadnos_> there's a gain in step rate vs. CPU speed
[15:55:52] <cradek> I see
[15:56:06] <cradek> do you run the emc pid as P-only?
[15:56:13] <anonimasu> me?
[15:56:18] <cradek> oh I see above, sorry
[15:56:21] <anonimasu> I used the default.. :)
[15:56:27] <anonimasu> assumed it were reasonable..
[15:56:38] <anonimasu> I used P=150 in my emc1 config..
[15:56:41] <SWPadnos_> I thought I was 0 by fdefault
[15:57:12] <anonimasu> I saw it but I thought well, maybe somone's found out that it works better
[15:57:34] <anonimasu> cradek: it'll be real closed loop once I hook up everything though..
[15:57:45] <anonimasu> just that I still end up having to tune the PID loops separately
[15:58:22] <cradek> you could bypass the USC and use software step generation to test that part
[15:58:35] <anonimasu> the usc should work I've made parts with it before :)
[15:58:49] <anonimasu> I dont think my pc generates good steps..
[15:58:59] <anonimasu> it always came up short/long when using tcnc before
[15:59:11] <anonimasu> I ran it a week or two to test
[15:59:20] <anonimasu> I'm going to go outside in a bit and try it
[15:59:26] <cradek> are you using emc 2.0.4?
[15:59:29] <anonimasu> yes
[15:59:33] <anonimasu> err no
[15:59:34] <anonimasu> HEAD
[15:59:42] <cradek> have you had the "unexpected realtime delay" error?
[15:59:53] <anonimasu> I were running 2.0.4 but once I were doing contouring it went stuttering
[15:59:57] <anonimasu> no
[16:00:07] <cradek> ok good
[16:00:49] <SWPadnos_> even with delays, it shouldn't be that bad - there should only be a 1ms thread rate
[16:01:00] <anonimasu> yeah
[16:01:15] <cradek> ok just checking
[16:01:22] <anonimasu> yeah better to be sure :)
[16:01:28] <anonimasu> I'm going to run outside and try it out..
[16:01:43] <anonimasu> I think I have a piece of alu in the mill since I did that spiral test
[16:02:03] <skunkworks> which spiral?
[16:02:13] <skunkworks> the arc or strait line?
[16:02:49] <skunkworks> http://www.electronicsam.com/images/KandT/cncworkshop/spiralarc.JPG
[16:03:02] <skunkworks> http://www.electronicsam.com/images/KandT/cncworkshop/spiralline.JPG
[16:03:07] <cradek> ooooo
[16:03:11] <skunkworks> that was on the mazak
[16:04:10] <cradek> it would be nice if we could get that backlash out of it this coming fest
[16:05:53] <SWPadnos_> I wonder if that's backlash or if it needs more P (or ff1)
[16:06:16] <SWPadnos_> or was that D? more stiffness in the PID ;)
[16:06:27] <cradek> it's only in one axis - the other is perfect
[16:06:40] <SWPadnos_> true, but the axes are tuned separately
[16:06:51] <SWPadnos_> or they should be
[16:07:20] <cradek> iirc ray and roland were both pretty sure it's backlash (roland even said he can hear it, which surprised me)
[16:07:25] <SWPadnos_> heh
[16:07:36] <SWPadnos_> I couldn't hear much with that fan running
[16:07:52] <SWPadnos_> I think the cooling on that thing takes more power than my mill
[16:08:07] <cradek> I see all three axes are tuned the same
[16:08:09] <anonimasu> →œ
[16:08:11] <anonimasu> :)
[16:08:18] <cradek> so who knows, maybe you're right
[16:08:38] <SWPadnos_> I wouldn't bet on me vs. both Ray *and* Roland
[16:08:46] <cradek> I'm not :-)
[16:08:48] <SWPadnos_> heh
[16:09:07] <anonimasu> hm
[16:09:11] <anonimasu> I think I broke something
[16:09:15] <anonimasu> recompile.
[16:10:05] <SWPadnos_> there are changes to the USC driver from last night - let us know if they affect you :)
[16:10:17] <SWPadnos_> (they shouldn't)
[16:18:53] <anonimasu> LOL!
[16:19:22] <anonimasu> if my machine rampages and I machine a clamp I'll come and visit somone :D
[16:19:27] <SWPadnos_> what's so funny?
[16:19:41] <anonimasu> let us know if they affect you :)
[16:19:45] <anonimasu> reassurance ;)
[16:19:55] <SWPadnos_> heh
[16:19:55] <anonimasu> ah well that's life when you run stuff off cvs
[16:19:57] <anonimasu> :)
[16:20:05] <anonimasu> im not too worried..
[16:20:09] <SWPadnos_> there really should be no difference for you
[16:20:15] <anonimasu> * anonimasu nods
[16:20:29] <anonimasu> SWPadnos_: I've come to the conclusion I need a servo for the Z axis..
[16:20:43] <SWPadnos_> heh
[16:20:49] <anonimasu> been thinking long and hard and checked about steppers.
[16:21:32] <anonimasu> now it's just the matter of finding one..
[16:21:44] <anonimasu> one that has size and rpm.. suitable..
[16:22:03] <anonimasu> and that wont make me eat pasta for 4 weeks
[16:22:17] <cradek> yum pasta
[16:22:30] <anonimasu> yeah, reminds me of being a student
[16:22:52] <anonimasu> we had food coupons, but we used to save them up, and we ate pasta at times like that
[16:23:22] <SWPadnos_> Ramen noodles
[16:23:44] <anonimasu> yep
[16:24:17] <anonimasu> I really hate the fact that all automation stuff is so expensive..
[16:24:38] <anonimasu> I could build a quill with linear slides for about the same as a servo for z..
[16:24:58] <anonimasu> but I think that would give me issues with rigidity
[16:25:08] <anonimasu> :)
[16:28:51] <SWPadnos_> new stuff is expensive as hell
[16:29:09] <anonimasu> yeah
[16:29:28] <anonimasu> * anonimasu hopes to find a nice motor off ebay
[16:31:35] <anonimasu> I dont really get how they can make small dc motors cost several 100$
[16:42:53] <Lerneaen_Hydra> they sell, people buy
[16:55:47] <anonimasu> heh
[16:56:12] <anonimasu> Lerneaen_Hydra: you dont really have much option if you need what they sell
[17:05:37] <Lerneaen_Hydra> exactly
[17:05:47] <anonimasu> but it's weird..
[17:06:17] <anonimasu> hm..
[17:06:23] <anonimasu> I'll be back in just a bit..
[17:06:26] <anonimasu> going to try this out
[22:23:21] <Jymmm> alex_joni is there a way to have logger NOT log anything *I* say ?
[22:23:30] <Jymmm> on a perm basis?
[22:23:44] <alex_joni> Jymmm: you can start your lines with [OFF]
[22:23:53] <alex_joni> but I guess that's tiring
[22:24:15] <alex_joni> Jymmm: I accept a patch to the logger if you know enough perl to do that
[22:24:38] <alex_joni> * alex_joni doesn't
[22:24:55] <alex_joni> Jymmm: or maybe if you find a smarter logger
[22:25:01] <Jymmm> logger_aj bookmark
[22:25:11] <alex_joni> logger_aj: bookmark
[22:25:11] <alex_joni> I'm feeling lazy .. but here's the log anyways: http://81.196.65.201/irc/irc.freenode.net:6667/emc/2006-10-30#T22-25-11
[22:26:39] <alex_joni> access control list?
[22:26:53] <alex_joni> doubt it.. it's a very stupid logger
[22:28:13] <alex_joni> anyways.. if you find a decent logger that can be run from a terminal .. I'll investigate and replace
[22:29:44] <jepler> Jymmm: the only way to prevent people logging what you say is to say nothing.
[22:30:13] <jepler> Jymmm: even if logger_aj obeys some ACL or an [off] directive, that's no guarantee that somebody else isn't saving the logs as well
[22:30:36] <SWPadnos> I'm sure that "jymmm" is one of google's more popular searches
[22:30:58] <alex_joni> SWPadnos: you'd be surprised :D
[22:31:14] <SWPadnos> heh
[22:31:25] <alex_joni> googles searches on jymmm just went up 300% after that statement
[22:31:33] <SWPadnos> 300000%
[22:31:38] <alex_joni> :P
[22:33:08] <alex_joni> good night gents
[22:34:11] <jepler> see you alex
[22:50:21] <Jymmm[OFF]> Test
[22:50:28] <Jymmm[OFF]> logger_aj bookmark
[22:50:43] <alex_joni> heh
[22:50:52] <alex_joni> Jymmm[OFF]: use logger_aj: bookmark
[22:50:58] <alex_joni> either : or ,
[22:51:01] <Jymmm[OFF]> logger_aj: bookmark
[22:51:01] <Jymmm[OFF]> I'm feeling lazy .. but here's the log anyways: http://81.196.65.201/irc/irc.freenode.net:6667/emc/2006-10-30#T22-51-01
[22:51:25] <Jymmm[OFF]> nope, that didn't work =)
[22:54:48] <Jymmm[OFF]> Jymmm[OFF] is now known as Jymmmm
[22:55:10] <SWPadnos> strange - the logger logs the name of the person who asked for the bookmark, not its own name
[22:55:23] <SWPadnos> or whoever last spoke, I'm not sure
[22:57:57] <Jymmmm> SWPadnos: have you done any SMP coding by chance?
[22:58:03] <SWPadnos> not really
[22:58:10] <Jymmmm> SWPadnos ever?
[22:58:47] <SWPadnos> I've done some examination of multi-threaded apps, but not on any modern systems (<5 years old)
[22:58:59] <Jymmmm> SWPadnos PITA ?
[22:59:03] <SWPadnos> I don't think I've ever written one (that was meant to run on a single system)
[22:59:23] <SWPadnos> somewhat of a PITA, there are libraries / systems to help for certain types of applications
[22:59:28] <SWPadnos> MPI is one, I think
[22:59:30] <Jymmmm> SWPadnos Someone told me about make -j2 but nfc.
[23:00:10] <SWPadnos> that's not multithreaded, it's a way of having make run more than one process (compiles, for example) at a time
[23:00:31] <Jymmmm> only during compile, or the app itself?
[23:00:44] <SWPadnos> duting the make only
[23:00:49] <SWPadnos> during
[23:00:50] <Jymmmm> ah, bummer
[23:01:02] <rayh> someone a while ago proposed using make to boot linux.
[23:01:10] <SWPadnos> yep. it's great when you have multiple cores
[23:01:14] <SWPadnos> rayh, what?
[23:01:48] <rayh> I read about it a year ago or so.
[23:02:02] <rayh> the idea was to allow a multithreaded startup.
[23:02:27] <rayh> why make the display wait for networking for example
[23:02:36] <SWPadnos> ah - there's a new startup/init manager in Edgy - that may be the result of that discussion
[23:03:00] <SWPadnos> "upstart"
[23:03:11] <rayh> I'm impressed with start and stop speed in 6.06
[23:03:24] <SWPadnos> you should see it on a dual dual-core system
[23:03:31] <rayh> I can imagine.
[23:03:32] <SWPadnos> it's holy crap fast
[23:03:51] <Jymmmm> As I see it, dual cpu or dual core are pretty much worthless for doing any real work.
[23:03:51] <SWPadnos> at least for the second login. the first still takes nearly a second
[23:03:57] <SWPadnos> bullshit
[23:04:04] <SWPadnos> it depends on the kind of work you do ;)
[23:04:08] <Jymmmm> crypto
[23:04:49] <SWPadnos> many ciphers are applied multiple times. what happens if you pipe something from one CPU to another CPU, with each one doing one step of the work?
[23:04:53] <Jymmmm> Instead of being able to utilize 200% (dual cpu), I have to run two iterations.
[23:05:08] <SWPadnos> that's because you have non-multithreaded crypto apps
[23:05:31] <Jymmmm> If the os supports SMP, the app shouldn't have to (imo)
[23:05:34] <SWPadnos> at least, there's only one thread doing the bulk of the work
[23:05:40] <SWPadnos> that's wrong
[23:05:43] <Jymmmm> bullshit
[23:05:57] <SWPadnos> there's no way the OS can know how to break apart the operations in an arbitrary app
[23:06:10] <SWPadnos> the way you tell it as a programmer is by splitting the program into separate threads
[23:06:19] <SWPadnos> (or other process types)
[23:06:35] <SWPadnos> nyah nyah - not bullshit :)
[23:06:43] <Jymmmm> the app and the os are seperate entities... to the app should have to know what's going on inside the cpu(s)
[23:07:18] <SWPadnos> ok - you're the OS, and I'm the program. what parts of my work can be run in parallel?
[23:07:20] <Jymmmm> the os should handle all that "behind the scenes"
[23:08:02] <SWPadnos> I've just told you about as much as a program tells the OS - now how can my work be parallelized?
[23:08:21] <SWPadnos> if you can't tell me, then there's no way that a computer can figure it out either
[23:08:30] <Jymmmm> As example... If I have dual 500Mhz, to the app it should perform like 1000Mhz cpu
[23:08:47] <SWPadnos> that would be great, but it's not possible with today's hardware
[23:08:57] <Jymmmm> horsephucky
[23:09:04] <Jymmmm> (why not?)
[23:09:25] <SWPadnos> well, take your crypto application, let's say triple DES
[23:09:25] <rayh> I seem to remember an IBM demo of beowolf clusters working on a single rendering app.
[23:09:37] <SWPadnos> sure, but the app was writetn with that in mind
[23:09:40] <rayh> 64 processors.
[23:09:46] <SWPadnos> it was a clustering app
[23:09:51] <SWPadnos> yep - Digital Domain
[23:10:02] <SWPadnos> they use hundreds of CPUs though
[23:10:17] <SWPadnos> ok - so here we go with triple DES
[23:10:31] <rayh> and selectively killed off one or more and the system went back and filled in the errors.
[23:10:51] <SWPadnos> yep - not a problem with good clustering software.
[23:11:12] <SWPadnos> in those apps, there's usually a master computer that hands out blocks of data for the processing nodes to work on
[23:11:36] <SWPadnos> they return their results and get more data (kind of like Seti@home)
[23:11:40] <Jymmmm> and they are just a bunch of computers connected together
[23:11:44] <SWPadnos> correct
[23:11:52] <Jymmmm> so wth couldn't an os do that
[23:11:56] <SWPadnos> usually with a very high speed interconnect, but it depends on the application
[23:12:18] <SWPadnos> it can, but you missed the part where I said that the apps were written to take advantage of the parallel architecture of the cluster
[23:12:35] <Jymmmm> ray said it wasn't
[23:12:48] <SWPadnos> no, he didn't
[23:13:13] <Jymmmm> I musta confused this --> single rendering app.
[23:13:17] <SWPadnos> he said that if they turned off a processing node or two, the system noticed that and re-assigned the work to other still functioning processors
[23:13:29] <SWPadnos> could be
[23:13:54] <SWPadnos> it was a "single app", in that the control node would take a single "job" and run it on the cluster
[23:14:13] <Jymmmm> you goto a reatraunt and the waiter takes your order then delivers food, we could care less that's theres a 20 ppl in the kitechen making the food "behind the scenese"
[23:15:04] <SWPadnos> but in that analogy, you'd be asking the chef to have 20 people (or 3, or however many are present) to divide up the labor without seeing the recipe
[23:15:14] <SWPadnos> he can only see the result, but not how it's made
[23:16:26] <Jymmmm> why cares HOW, just as long as the results are good
[23:16:53] <SWPadnos> heh - I can agree with that (but the how is the hard part ;) )
[23:17:12] <Jymmmm> I mean we have shitloads of FS's, why could one of those algo's be used.
[23:17:22] <SWPadnos> file systems?
[23:17:22] <Jymmmm> RAID5 type thingy
[23:17:30] <Jymmmm> it's distributed
[23:17:38] <SWPadnos> maybe becase they have nothing to do with parallelism
[23:18:02] <SWPadnos> it's data in several places, not distributed processing
[23:18:21] <Jymmmm> It's a bunch of read/writes, just like cpus
[23:18:33] <Jymmmm> just REALLY REALLY shorter =)
[23:18:43] <SWPadnos> heh
[23:18:47] <SWPadnos> http://en.wikipedia.org/wiki/Automatic_parallelization
[23:19:37] <Jymmmm> See a mutli threaded app take sthe roll of conductor, why not hand that off to the kernel instead?
[23:19:42] <SWPadnos> note that that page describes compile-time parallelization, *not* run=time
[23:19:45] <Jymmmm> make sense?
[23:19:49] <SWPadnos> no
[23:20:16] <Jymmmm> instead of having the app open all the threads and deal with putting the pieces back together, let the OS do it
[23:20:30] <Jymmmm> the app just passes the req to the OS
[23:20:55] <Jymmmm> maybe a small bottleneck, but the processing has gotta be faster
[23:20:59] <SWPadnos> any app that is not explicitly written to have multiple threads has exactly one thread, so how can the OS know where to cut it into different pieces?
[23:21:20] <Jymmmm> why does it need to? Just FIFO
[23:21:33] <SWPadnos> one thread in = one thread out
[23:21:46] <Jymmmm> whoever is doing the least amount of work gets assigned the job
[23:21:50] <SWPadnos> you seem to be confusing data flow with program flow
[23:22:16] <SWPadnos> that's what happens, but the unit of measure for the OS to move a piece of work from CPU to CPU (or core to core) is the thread
[23:22:25] <Jymmmm> if the app sends 3 command to be processed, does it matter if CPUa or CPUb does it?
[23:22:29] <SWPadnos> yes
[23:22:32] <Jymmmm> why?
[23:22:56] <SWPadnos> read, process, write - those are my 3 commands
[23:23:00] <SWPadnos> what orders are valid?
[23:23:15] <SWPadnos> is write, process, read valid?
[23:23:21] <Jymmmm> OSRx:0001:Read
[23:23:22] <SWPadnos> is read, write, process valid?
[23:23:28] <Jymmmm> OSRx:0001:Read > CPUa
[23:23:57] <Jymmmm> Just like tcp/ip and all the packets
[23:24:10] <Jymmmm> they have to come in order ro make sense
[23:24:13] <SWPadnos> writing is dependent on processing having finished, processing is dependent on the read having finished
[23:24:14] <Jymmmm> to
[23:24:39] <Jymmmm> ok, to cahce the shit in sequencial order then return to the app
[23:24:56] <SWPadnos> what do you mean "return to the app"?
[23:24:57] <Jymmmm> just like the way a car is built.
[23:25:04] <SWPadnos> I thought we were talking about running an app
[23:25:28] <Jymmmm> you dont care who is building the engine or chassis, as long as the engine is under the hood and not on top of the car
[23:25:58] <SWPadnos> that kind of dependency isn't encoded in executables, only in the source code (sort of)
[23:26:25] <SWPadnos> more info: http://users.actcom.co.il/~choo/lupg/tutorials/parallel-programming-theory/parallel-programming-theory.html
[23:26:53] <Jymmmm> If a string of commeads are going to the cpu, it has to return the results (basically) in the same order, correct?
[23:27:07] <SWPadnos> for each given CPU, yes
[23:27:11] <Jymmmm> right
[23:27:15] <SWPadnos> but they operate on different sets of commands
[23:27:52] <Jymmmm> Now, what if you number those commands, then distribute them to multiple cpus, put them back in order, then return to the app
[23:28:03] <SWPadnos> that's what multithreaded apps do
[23:28:12] <SWPadnos> (sort of)
[23:28:17] <Jymmmm> Teh OS doing the distribution
[23:28:22] <SWPadnos> nope
[23:28:26] <Jymmmm> yes
[23:28:45] <Jymmmm> No app gets direct to the cpu(s) without dealing with the OS
[23:28:56] <Jymmmm> aka middleman
[23:28:56] <SWPadnos> of course they do
[23:29:30] <SWPadnos> if I write a C program and compile it, the result is machine code that runs directly on the CPU
[23:29:42] <Jymmmm> try running it w/o an os
[23:29:47] <SWPadnos> there are protections in place so I don't use certain instructions, or access parts of memory
[23:29:56] <SWPadnos> and some of the instructions are library or OS function calls
[23:30:15] <Jymmmm> but it still has to be passedthru the OS at some point
[23:30:18] <SWPadnos> but any time my app is running *my* code, it's directly on the CPU, no middleman
[23:30:35] <SWPadnos> only when I call library / OS functions
[23:30:55] <Jymmmm> oh horsefeathers!
[23:31:00] <SWPadnos> I will lose the CPU from time to time, because the OS manages the timeslicing / multitasking (and that's at a higher level than my user code)
[23:31:14] <SWPadnos> higher privilege level, that is
[23:31:27] <Jymmmm> so your app has to pass trhu the OS
[23:32:00] <SWPadnos> I don't know what you mean by that. of course it's loaded by the OS, and to access any peripherals it has to use OS calls
[23:32:20] <Jymmmm> so in that higher level multitasking you distribute the instructions
[23:32:28] <Jymmmm> is what I'm saying
[23:32:39] <SWPadnos> but that kind of thing is only a small part of some programs (like crypto, which generally spend most of their time doing the actual data manipulation)
[23:33:07] <SWPadnos> hold on. let's look at psdeudocode for a C program that isn't multithreaded
[23:33:20] <SWPadnos> err - a program, not C since it's pseudocode ;)
[23:33:33] <SWPadnos> 1: read a file
[23:33:51] <SWPadnos> 2: run my own algorithms on the file data
[23:34:04] <SWPadnos> 3: read another file (dependent on the outcome of step 2)
[23:34:16] <SWPadnos> 4: run my own algorithms on the new data
[23:34:21] <SWPadnos> 5: ask the user for input
[23:34:28] <SWPadnos> 6: do more data manipulation
[23:34:43] <SWPadnos> 7: write the result (to a file or the terminal, it doesn't matter)
[23:35:02] <SWPadnos> any questions about what's going to happen?
[23:35:11] <SWPadnos> (ie, does that make sense?)
[23:36:19] <SWPadnos> hello - I don't recall dismissing class early
[23:36:22] <SWPadnos> :)
[23:38:46] <Jymmmm> lol
[23:38:57] <SWPadnos> heh
[23:39:11] <Jymmmm> was checking my 12Mpps dual POS =(
[23:39:23] <SWPadnos> Mpps?
[23:40:43] <SWPadnos> so - the steps 1-7 above - do they look reasonable to you?
[23:41:25] <Jymmmm> yeah
[23:42:44] <SWPadnos> ok, now the mechanics of all the odd numbers (reading/writing files, user interaction ...) are that the OS has control when those operations are executing - as you mentioned, you have to ask the OS for some stuff
[23:45:21] <SWPadnos> so my program calls the OS "read" function, and then doesn't get control of the CPU back until the read completes
[23:47:40] <SWPadnos> now, say the OS is smart and looks at my program, and sees that it makes OS calls in steps 1,3,5, and 7
[23:48:10] <SWPadnos> it can't split 1+2 to one CPU, 3+4 to another, and 5+6 to another, even though it might look like it can
[23:48:36] <Jymmmm> where is the READ function, in the OS ?
[23:48:41] <SWPadnos> yes
[23:48:55] <Jymmmm> Ok, and the READ function couldn't be "enhanced"?
[23:49:01] <SWPadnos> actually, all the odd numbered steps are OS read and/or write functions (at least on Linuz)
[23:49:22] <SWPadnos> not really, remember that the read function spends most of its time waiting for the disk
[23:49:35] <Jymmmm> like like HW RAID5
[23:49:39] <SWPadnos> ie, letting other applications run, since Linux is smart that way
[23:49:52] <Jymmmm> but it can read across multiple devices and reassemble the content properly
[23:50:05] <SWPadnos> so what, my step 2 still needs to wait for the data to arrive
[23:50:19] <Jymmmm> so it'll arrive faster
[23:50:39] <SWPadnos> the OS functions may be split across CPUs automatically, but my own application functions can't be (automatically)
[23:50:57] <SWPadnos> that's hardware dependent, as well as OS dependent
[23:51:15] <Jymmmm> lets take a break at this point,
[23:51:20] <SWPadnos> ok
[23:51:22] <Jymmmm> I smeel foodage =)
[23:51:24] <Jymmmm> smell
[23:51:28] <SWPadnos> bastid
[23:51:32] <Jymmmm> lol