We all know SqueezeCenter will run OK on very modest hardware. But what can we do to design a BETTER server for our uses?
First off, we have to ask: What makes for a "good" SqueezeCenter server?
It shouldn't crash, certainly.
It should serve streams to the devices we connect to it smoothly, without stalling, pausing, stuttering, etc.
It should execute searches quickly.
It should run a scan quickly.
With small msuic collections, a proper Squeezecenter installation seems to run fine on just about any fairly modern system.
But I have over 5,000 cds ripped to WMA lossless, and performance starts to be an issue with collections of this size. To wit:
**Searches aren't fast as I'd like**
**A complete scan of the library takes much longer than I'd like**
**Occasionally, when the server is busy doing a search, etc, it causes interruptions in streams when serving multiple players.**
So how to build a "better" server?
There's a lot to consider. CPU speed, memory size & speed, platform I/O performance, disk capacity, disk performance, LAN performance, OS overhead, application tuning......
There's some things I need to know about SqueezeCenter - in particular, how much can it take advantage of multiple CPU cores? In other words, how much of the Squeezecenter and MYSQL code is optimized for multi-threading? It would be good to hear from Logitech about this!
I know the Windows PERL interpreter is a multi-threaded design. From my own observations, however, it doesn't look like other parts of the software take very good advantage of multi-core CPUs.
I have SqueezeCenter 7.2.1 running on a quad core Intel CPU. When I do a music search or rescan the folders, I see a lot of activity on just one CPU core- I don't see much of the workload being spread out over avaialble resources. This is probably why it takes hours to do a directory rescan.
Also, it seems that both stream serving and music searches run on the same single CPU core. So, when I am in the living room running a search for a particualr artist, the person listening in the den gets "stutters" in the stream. (My LAN is a 1 GB ethernet LAN, not Wifi, and very lightly loaded so I know it's NOT a network capacity issue. And the NIC in my Squeezecenter server is a good 1000 MBPS PCIe device.)
I wonder if there is a way of tuning Squeezeserver to make it run better- is it possible to manually assign differing CPU affinities to various component processes in order to improve performance?
I also wonder if the instance of MYSQL could be tuned for higher performance. Is there a way to tell how large the MYSQL instance is- and to size RAM accordingly? I'm currently using 32 bit XP with 2 GB of RAM, but if it would run faster, I could go to 8 GB of RAM and a 64 bit OS like XP64 or Ubuntu. Some guidance from any MYSQL DBA types out there or from Slim Devices HQ on this would be appreciated.
Does MYSQL take advantage of all available RAM - is it possible to tune MYSQL to minimize disk use to eliminate the bottleneck represented by HDD I/O?
Also, are there any perfomance metrics to help decide if SqueezeCenter runs faster on Ubuntu or XP?
First off, we have to ask: What makes for a "good" SqueezeCenter server?
It shouldn't crash, certainly.
It should serve streams to the devices we connect to it smoothly, without stalling, pausing, stuttering, etc.
It should execute searches quickly.
It should run a scan quickly.
With small msuic collections, a proper Squeezecenter installation seems to run fine on just about any fairly modern system.
But I have over 5,000 cds ripped to WMA lossless, and performance starts to be an issue with collections of this size. To wit:
**Searches aren't fast as I'd like**
**A complete scan of the library takes much longer than I'd like**
**Occasionally, when the server is busy doing a search, etc, it causes interruptions in streams when serving multiple players.**
So how to build a "better" server?
There's a lot to consider. CPU speed, memory size & speed, platform I/O performance, disk capacity, disk performance, LAN performance, OS overhead, application tuning......
There's some things I need to know about SqueezeCenter - in particular, how much can it take advantage of multiple CPU cores? In other words, how much of the Squeezecenter and MYSQL code is optimized for multi-threading? It would be good to hear from Logitech about this!
I know the Windows PERL interpreter is a multi-threaded design. From my own observations, however, it doesn't look like other parts of the software take very good advantage of multi-core CPUs.
I have SqueezeCenter 7.2.1 running on a quad core Intel CPU. When I do a music search or rescan the folders, I see a lot of activity on just one CPU core- I don't see much of the workload being spread out over avaialble resources. This is probably why it takes hours to do a directory rescan.
Also, it seems that both stream serving and music searches run on the same single CPU core. So, when I am in the living room running a search for a particualr artist, the person listening in the den gets "stutters" in the stream. (My LAN is a 1 GB ethernet LAN, not Wifi, and very lightly loaded so I know it's NOT a network capacity issue. And the NIC in my Squeezecenter server is a good 1000 MBPS PCIe device.)
I wonder if there is a way of tuning Squeezeserver to make it run better- is it possible to manually assign differing CPU affinities to various component processes in order to improve performance?
I also wonder if the instance of MYSQL could be tuned for higher performance. Is there a way to tell how large the MYSQL instance is- and to size RAM accordingly? I'm currently using 32 bit XP with 2 GB of RAM, but if it would run faster, I could go to 8 GB of RAM and a 64 bit OS like XP64 or Ubuntu. Some guidance from any MYSQL DBA types out there or from Slim Devices HQ on this would be appreciated.
Does MYSQL take advantage of all available RAM - is it possible to tune MYSQL to minimize disk use to eliminate the bottleneck represented by HDD I/O?
Also, are there any perfomance metrics to help decide if SqueezeCenter runs faster on Ubuntu or XP?
Comment