[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
serving.
> 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.
karl.
More information about the Icecast
mailing list