This might be a rabbit hole but switches have a total upper throughput limit. If you are testing while others are streaming Netflix etc. it will leave a smaller chunk of the pie. Also, does the Cisco have configurable ports? They should be set to auto negotiation for speed and duplex. If they aren’t configurable then almost certainly they are correctly set.
you might also want to check for packet loss. A ping test for 60 seconds with a packet size of 1450 should help rule that out.
The CISCO switch port already is default config, auto negotiation for speed and duplex. There has not packet loss, I had do the ping test from the CISCO 2960 to the CORE. (e.g. 10000 packet , 1500 and 9000 packet size.
I don’t believe the Core uses jumbo frames. So packets of 9000 bytes would require segment reassembly and that’s slow. Jumbo frames is always a bad idea unless every hop in the chain supports it and has it enabled.
Do your NAS and Mac host use jumbo frames? If so, you might find an MTU of 1500 from the source works better. It’s just a thought though and one I doubt because it wouldn’t greatly affect traffic in the other direction.
Swap the switch it, its the next logical step, I am guessing the switch is old?
Edit to add, yes introduced in 2005 and ended in 2012 so unless the very last one sold it may well be creaking, contrary to popular belief electronics dont go on forever.