Thursday, June 10, 2004

JavaHMO On FC1 With SUN JAVA 1.4.2

I have a TiVo that allows streaming of music files from computers that know how to talk to it. That functionality is called TiVo Home Media Option (HMO). I have repurposed an old laptop with a broken screen to be my MP3 server, running Linux RedHat (FC1), and uses JavaHMO to stream the music to the TiVo. Except that from time to time the music will just stop, wait, pause, and start again from where it left off. And other functionality is flaky too. I diagnosed the link, the disks, everything working fine, until I finally looked at JavaHMO itself with 'top', and found out it will happilly eat 80% of all memory available, and during streaming will spike to 90% of CPU time usage, often co-inciding with one of the pauses or other functionality problems. From my intuition of 5+ years of JAVA development, I'd say that during the pauses  it's... garbage collecting. Or there's a thread problem somewhere, but does JavaHMO need multi-threading? My guess: SUN's JAVA 1.4.2 for Linux must suck ass, since no-one reports this problem on Windows boxes running JavaHMO, and JAVA is supposed to be over these garbage collecting stutters thanks to many optimizations.

Now what? Find a a better JAVA implementation? Did I misconfigure JAVA somehow upon installation -- eventhough it didn't give me any options? How do I tune it? Wipe the server and make it into a Win2K box -- but what about my perfect DNS/DHCP server, dnsmasq, run that under cygwin? The option I'd like most is find another HMO streamer for Linux that doesn't use JAVA, but nary one seems to be out of alpha stage.