Question: I've a question which bothers me since quite some time now. I have several environments and servers. All of them are connected to 1 Gbit ethernet swiches (e.g. Cisco 3560).

My understanding is, that a 1 Gbit link should provide 125Mbyte/s - of course this is theory. But at least it should reach ~100Mbyte/s.

The problem here is, that one copy process only reaches ~20Mbyte/s.

I'm aware of these factors but they don't make any difference:

* Source and Destination on the same switch or not
* Copy utility: SCP, Rsync, Windows copy, Windows robocopy
* SMB/CIFS, NFS, iSCSI
* Disk storage: NetApp FAS, locally attached 15k SCSI

With all of these configurations, I never get more than ~25Mbyte/s throughput. The thing is, that if I start multiple parallel copy streams, like 3 times an rsync, i almost reach 90Mbyte/s. I also did some IOMeter tests and found out that the "chunksize" makes a huge difference, but is normally not tunable with the given tools (or is it?).

Jumbo frames are not enabled but I'm unsure if it would make a difference. TOE is enabled on all NICs.

What are the bottlenecks you would think about? Do you have similar experiences? Are these the expected "natural" values?

Thanks in advance

Answer: 
I think the only real reason is to have always up to date.

I'm against linking libs, scripts, etc because I think my traffic stats are a value to be kept at home.

Moreover it is quite trivial to have the lib hosted and up to date, a cronjob can do the trick easily, efficiently and safely.
If you link to a resource to save your bandwidth (or to try improve response times to the user in the case of large common libraries) be aware of two potential major problems:

1. The external host may go down at some point, due to accident, DoS or planned maintenance. This may cause your site to break so make sure you account for it (if only by giving the user a useful-ish message like "Unable to load JQuery, some features may be broken. Please refresh this page. If the problem persists please report to ..."
2. When a new version appears it may have some incompatibility with your other code due to a bad assumption (i.e. you have relied on an undocumented or officially undefined behaviour that has changed between versions, or new features bring with them a namespace conflict). This may break your pages until you find and work around the issue.

If you hot-link to a script or anything else of importance to the running of your application make sure that you keep a local copy anyway. That way you can switch to using the local copy as an interim measure if either of the above problems happen and don't get fixed quickly.