[Icecast] high CPU load for large # sources?

Karl Heyes karl at xiph.org
Mon Mar 7 22:31:17 UTC 2005

On Mon, 2005-03-07 at 22:01, Klaas Jan Wierenga wrote:
> Hi all,
> I have an icecast setup with 20+ sources. During peak times some 20 sources
> will be connected with a total of some 250 listeners more-or-less equally
> divided over the 20 sources. All streams are running at a measly 16 kbps.
> There is enough bandwidth to/from the server. During these peak times I see
> very high CPU usage for icecast 98-99%. The system I'm running is an Intel
> Celeron 2.4GHz running Fedora Linux 1. It does appear that the server is
> happily serverving all clients, but what could cause the high CPU load?

I've only seen a busy CPU report on OS X which was relating to the file

> Is every source (/mount) serviced by a different thread? How many threads
> would I have then? My threadpool is set at 20. Could it be that the timeout
> on poll/select of 250 in each thread causes Icecast to effectively busywait
> since with 20 threads the actual time between the poll/select system calls
> is reduced to ~10ms, the timeslice of Linux!

Each source is handled by a separate thread, but there's no relationship
between those and threadpool, it's unlikely that a thread pool of more
than 2 or 3 is ever useful.

If poll/select are returning continuously before 250 ms then it's either
signal related (unlikely) or some fd has triggered, the poll timeout can
also drop to 0 on client bursts, but those are short lived.

I would determine which thread(s) are busy from ps, then use 

strace -o output.txt -p <thread of busy icecast>

ctrl-C it after a few seconds, then email the output.txt file to me.


More information about the Icecast mailing list