Alley_Cat wrote:
I think it's largely irrelevant if uploading is a background/foreground process, though for some people an ability to control upload bandwidth used would be helpful. Perhaps their routers offer some QoS options which could be configured during large library uploads if there is no in-built solution.
QoS (Quality of Service) could help here if you were willing to set it up, however it is a part of the router & network infrastructure, not the OS. As such it is beyond Apple's control for a huge percentage of users. Do Apples own routers even offer QoS?
The solution is quite clear to me (and some others here), but unfortunately I don't know how to implement it (or have the time to test it).
The OS needs to throttle the upload rate to a level that allows other outbound internet traffic to still function on the network - for each person that is likely to be a different value.
Look at other apps that upload large quantities of data (Dropbox, BackBlaze, Mozy, Arq) even Torrent clients get this right! – They offer a preference to limit the upload rate, some offer automatic or time based throttling too (automatic throttling is an oxymoron - it can't know how other users are loading the internet connection but it is better than nothing).
These throttling settings allow apps to upload whilst not killing other clients using the same internet connection. Apparently this is too complex for Apples users to understand - so Apple left this feature out.
OS X 10.10 uses the 'pf firewall' - that can be configured to filter & throttle traffic from specific processes. I'd suggest that any experienced Mac user/ Unix admin takes a look at that. I think it needs to rely on 'dummynet' to achieve this, since Apple built the kernel without support for filtering per process in pf.
Another more brutal option is to use Network Link Conditioner to alter all uploads on a Mac. It could help other users on the local network, but at the price of slowing all outbound data on the Mac.
http://osxdaily.com/2011/08/10/simulate-internet-connectivity-bandwidth-speeds-n etwork-link-conditioner/
That is part of Xcode.
Configure network link conditioner & see how it edits the pf rules as a starting point would be my suggestion. Then look at how to limit the rules for a single process (or the 2 processes that have been mentioned here).
This issue is 'solvable' IMO, but I don't know of any easy GUI apps that make it simple to do, so the answers involve reading manuals…
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/ man5/pf.conf.5.html
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/ man4/dummynet.4.html
Frankly it is simpler to turn of iCloud uploads & wait for something to change, even with throttling there will be a long duration of uploads that effect other users on the network it just needs to be reduced to make it bearable.