Older blog entries for walken (starting at number 27)

Played a bit with traffic shaping over the weekend. I'm on a cable modem, and without shaping frames go out of my computer at 10Mbit/s and get buffered into the cable modem before they get to the 128Kbit/s uplink, which results in very bad lag whenever I upload anything.

I had never played with this before, and I was amazed how much it helps. Now my telnets never get lagged at all, and the reduced latency also seems to help when I do some downloads. If people are interested, I would recommand them to use:

"tbf" for the basic shaping - making sure we do not overfill the modem's internal buffers. I did that with "tc qdisc add dev eth0 root handle 1: tbf rate 120kbit burst 2000 mpu 128 limit 100000". I would recommend people to use the tbf patch from http://luxik.cdi.cz/~devik/qos/qos.htm - it allows you to put additional shaping disciplines "inside" of the tbf shaper. (I dont know if its still required if you run 2.4 - I'm still running a 2.2 kernel)

"prio" works good enough to do the prioritization, based on the Type Of Service field of the IP headers. Most linux applications set it correctly, so you dont have to scratch your head too hard to prioritize your packets. If I was doing a gateway for windows machines I guess my life would be harder though. For now, I just did "tc qdisc add dev eth0 parent 1:1 handle 2: prio". interactive traffic (telnet, ssh) is prioritized over control traffic (dns, ping, netscape apparently ends up there too), and the lowest priority is bulk data (wget, scp, ftp, fetchmail, ...)

"sfq" tries to make the shaping more fair - so that if in the same priority band you transfer files to different places at the same time, they will get roughly equivalent amounts of bandwidth, even if one is far away with more ping delay and stuff. So I added it in all three priority bands: "tc qdisc add dev eth0 parent 2:1 handle 10: sfq perturb 600", "tc qdisc add dev eth0 parent 2:2 handle 20: sfq perturb 600" and "tc qdisc add dev eth0 parent 2:3 handle 30: sfq perturb 600". The perturb parameter is there to work around some limitations in the sfq algorithm, I found out that lower values (10 or so) tend to slow down the transfers a bit as they make packets appear out of order at times and that confuses the TCP bandwidth management algorithms.

Now the funny thing is, that I was only doing this to get me started - my longer term project was to set up shaping on downloads, which seems to be harder to do with the current linux code. AT&T cable had that very nasty capping to 1.5 mbit/s, which was done with a 1-second granularity: you could download 160KB or so, which for a close server took about half a second, then things would freeze for half a second, then it would start again, etc... that was pretty bad if you had connections to a remote server at the same time - these would usualy timeout because of loosing half of their packets. So, I was just getting ready to fight that by doing shaping on my end at a lower speed, say 1.4 mbit/s or so - but, AT&T beat me to it, and they fixed the problems on their end ! Incredible, they made me a happy guy. So, now I get smooth transfers in both directions and no delays. I guess I never liked cable so much before :)

Free Software

Lots of updates since last time.

I worked for a while putting together a new liba52 release (well two actually), and moved the project to sourceforge. The newer code has better downmix, is 2-3 times faster, and has a few added features too.

I also did some work on libmpeg2 - Well not as much as I should (vektor is waiting for a new release), but I wrote asm code for altivec (about a 2.6x speedup) and I'm starting to write some VIS (ultrasparc) code too. We'll see how it goes.

Life

I broke up with my girlfriend. About 3 monthes ago - well, we first did it 3 monthes ago, but then we've been together on and off again. Weird.

I've been pretty depressed too - like, for some time I couldnt sleep normally, and I had very persistent dark thoughts, and everything seemed to suck - the job, my life, everything. So now I'm taking some light antidepressants, and well, it seems to work quite well on me. I'm even starting to get a life :) This evening I'm going to some friends place for dinner, and then to a stanford students party. And I had to refuse some other invitation too. Like, that never happened before. I hope it keeps going that way for me.

Been inactive for some time: looked for a new place, started with my new job (which I find quite interesting), etc. Got my cable modem today. Should get active again soon. Hopefully.

23 Mar 2001 (updated 23 Mar 2001 at 03:54 UTC) »

Took two weeks of vacation in france and switzerland at my girlfriend's place. Yay :)

Flied back to california monday and started working at vmware tuesday. Yay ! I'm having a lot of fun already.

Still a bit jet-lagged though.

The mpeg2dec side is on standby for now, I've just been too busy last few weeks. I should be able to start again in one or two weeks I guess.

Busy switching jobs.

At the office I've spent last two days writing docs for the stuff I had written lately. Things are pretty polished now, so I think they will be able to use these after I leave.

Going to france for two weeks for vacation time. Well, I'll probably spend more time in switzerland with my GF anyway :) taking plane tomorrow in the evening, and coming back on the 19th.

Not found an appartment yet, so I will have to do this when I come back from vacation. This will be a huge mess, but oh well.

I have not done much on mpeg2dec last 10 days, and I dont expect to do much next 3 weeks either. I think things should get a bit better after that though. Crossing fingers.

Resigned today. I will start working at VmWare in 4 weeks. Yay !

sh: videolan currently has more features than oms or mpeg2dec, but wait till we get sync :-) I still hope that someday you might want to plug libmpeg2 inside vlc. Just need to keep coding until it makes a convincing case :)
16 Feb 2001 (updated 16 Feb 2001 at 08:34 UTC) »

Xmas holiday was nice - my GF came from switzerland for 3 weeks. Of course I only miss her more now. Long distance relationships are not nice everyday...

Spent more time on mpeg2dec, and actually made a 0.2.0 release earlier this evening. Now that we have all mpeg-2 "main profile" features working I guess I should work on synchro and on robustness against bogus input streams - they still make us segfault currently. I'm happy how the project goes. It's a time eater - I would guess 2-3 hours per day ? - but heh, my GF's not around anyway, so I dont have to feel bad about spending time coding :-)

saw david and omega joined. Nice to see more video people joining the ranks :) David did a great work for the livid release yesterday, and omega's gstreamer project looks quite promising.

Greedily upgraded my self-certification to master. Yes, I'm that proud of my new mpeg2dec release :)

Hmmm. After looking more for the g450 thing I found some more oddities. I now have X working :-) But, this card is dual head and half of the time it displays on the wrong (second) head. I still have to find the setting that makes X display on the right head all the time. Doh :-)

Got my new machine, an athlon 950 (with asus a7v motherboard). Works nicefully :) I got a few minor problems with it though, installing a debian (woody) system on it :

- The two ATA/100 channels were not recognized by any of the debian rescue discs. So linux would not see my hard drive at all... for now I just plugged it on one of the ATA/66 channels, I'll try to see if linux can support the ATA/100 thing when I have everything else working. The controller is a promise PDC20265.

- I cant get XFree4 to work yet :( I dont know if this is because I have a matrox G450, or if it is because of debian. The best results I got till now is to get a garbled screen (the synchro frequencies are apparently very wrong) and have the X server quit, while leaving the screen garbled. Ctrl-alt-del from the keyboard still works. Huh :-/

If anyone else has an a7v or a g450, I'd love to know how to make it work :)

On the mpeg2dec side, I implemented support for field pictures, so now I want to do some video output lib changes and then releases 0.2.0. The libvo changes are a major subject of dispute on the livid lists, which is just not fun for anyone involved :-/

18 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!