MacOS – iTunes on iMac plays media on Linux server via SMB. What’s with the slow imports, changes and stalls

macosNetworksnow leopardunix

I posted this on SuperUser, but it's probably more appropriate here.

I have an unRAID server (If you're unfamiliar with unRAID, you can check it out at lime-technology.com) which is a Linux based server. I'm getting terrible performance with iTunes on my iMac. The music playback is fine. But if I import a song file or change any metadata, it has problems. This isn't new, I've read many, many posts complaining about this and other problems concerning SMB shares and file systems. But I think I may be onto something and would like some advice.

This is what I've found so far. Snow Leopard, OS 10.6.x, has a problem with SMB and/or any file system other than HFS+. HFS+ is the common files system for OS X.

There are hundreds of posts on the web complaining about temporary freezes, slowdowns, sometimes crashes on the Mac using SMB shares and other file systems. I have yet to see Apple acknowledge that there is a problem, but there are a few suggestions out there that seem to have helped people. I'll be trying out some of these this week and post the results here.

From my own observations, specifically with iTunes, I've noticed some strange behavior. Here's my setup. I have an iMac running 10.6.4 (the latest update), the latest iTunes 10. The iTunes app is located on the local internal HD, I have my iTunes library files and all my media on disk 1 of my unRAID server. I'm hard wired to the server via a gigabit router. I have iTunes set to keep the media organized and copy the media files to the server.

When importing a song file into iTunes, the file initially seems to copy at a good rate, the file appears in it's proper place and you can see the size increasing as it copies. Then it stalls for a while, then the name changes to a long hex number for a few seconds and then reverts back to its' normal state. The process can take 30-40 seconds, even with a small song file. I looked at the console and I got the following error message:

11/8/10 12:24:28 AM /Applications/iTunes.app/Contents/MacOS/iTunes[2820] Possible unresolved transaction race -103/(Master Music Library/John Lennon/Rock 'N' Roll,(null))

The same thing happens when I make a change in the metadata. It takes a LONG time to update the file. For example, I added onto the name of an album and for each song it changed I got:

11/8/10 12:37:36 AM /Applications/iTunes.app/Contents/MacOS/iTunes[2820] Possible unresolved transaction race -103/(Master Music Library/John Lennon/Signature Box Set 5 – Walls And Bridges,(null))

This happens for each file imported or changed even within iTunes. It doesn't seem to matter if the source file is on the Mac (for import from, let's say) or the server (for metadata changes, let's say)

I followed the first path in the error message: /Applications/iTunes.app/Contents/MacOS/iTunes[2820].

In the /Applications/iTunes.app/Contents/MacOS/ folder I find the following files:

iTunes

libgnsdk_musicid.1.7.1.dylib

libgnsdk_sdkmanager.1.7.1.dylib

libgnsdk_submit.1.7.1.dylib

where iTunes is a Unix Executable File.

I did some more research and have found some posts about file systems other than HFS+ having trouble with app packages. I believe that all OS X apps are actually packages, like folders, but appearing as a single file. Other file systems don't seem to know what to do with these. There was some talk of "flattening" these app packages, but I haven't gone forward with that yet because I'm not sure I understand it enough yet.

I've also noticed that in the getinfo box under sharing & permissions I usually get "You can read and write", but with apps I get "You have custom access". This was something i had noticed before and thought it was a problem on the server, but I didn't realize it until now, I'm getting the custom access on every app. So I think that's probably normal.

I'm wondering if I'm having a permissions problem with the iTunes Unix Executable File. Right now the permissions are set as follows:

system: Read & Write

admin: Read & Write

everyone: Read only

Maybe it's trying to write to that file or another one and doesn't have the right permissions since the song file is now on the server and that's causing the stalls? I'm over my head here. Anyone have any ideas?

Best Answer

A few places you could consider some testing to find the problem...

Network

  • What physical (network) hardware connects the unRAID server and the Mac?
  • How long are any cables?
  • Are your network cables old/damaged/kinked at all?
  • Are you using a wireless network?
  • What's the ping time between the unRAID server and the mac?
  • Can you run a long term ping between (ideally with large packet sizes) and see how the response time varies and whether there's any packets lost?

It sounds like it might be a case of high latency or packet loss in the file system access causing issues. If so, then an unreliable network might be a simple thing to fix... but we'll need a bit more info from you about your setup to know if this is the issue.

High ping times (more than a couple of milliseconds) will really slow down access to lots of files (which iTunes will be doing when syncing for example). Packet loss will be even worse, as it might mean a stall for well over a second while attempting to access a file.

SMB Software

  • Are you able to test a similar setup using a Windows or Mac machine instead of the unRAID server (perhaps with reduced total library size)?
  • Are you able to compile your own version of samba on your Mac (ideally the same version that your unRAID server uses) and mount using that instead of the built-in samba client? (this one I have no idea how to do, but I'm fairly sure would be possible for an experienced UNIX sysadmin/hacker).

By swapping out the unRAID samba server or the built-in OS X SMB client entirely, you may find that it performs equally badly or "just works"... There's every chance that the unRAID server and Mac OS X 10.6.x just don't talk SMB very well together, in which case testing it with a different SMB client/server combination may show improved performance.

It's hard to assign fault if that turns out to be the case, because it could be either the client or server end that are technically not doing the right thing, but it's at least something to test... you might be able to permanently change the server or client SMB software on one machine to solve the problem...

iTunes Software

  • Can you test this out on an old version of iTunes? (would require rebuilding the library for that version of course)

If you have access to a machine with an older version of iTunes, you could see if it performs any better... perhaps its just that iTunes can't handle the network-induced lag (which may be at its maximum performance based on your network & SMB server-client setup).


Hopefully you have access to some other computer(s) and/or network hardware to do some of these tests, which should shed light on the underlying cause. Even if its a bug at the high level (with iTunes or unRAID or OS X), it may be something you can mitigate by providing a better (faster? more reliable?) network connection between the two computers. In any case, that should give you somewhere to start, and some more information for us to help...