This may be a duplicate question but I was unable to find an answer after a search.
I have a communications application that sends data to a central SSH server (TCP). The application is supposed to read data from a file and send(I use an in-house Java implementation of SSH). The transmission is inefficient (I compared same size data transfer over FTP and it was an order of magnitude faster. I know there are overheads with SSH but my previous experience dealing with the protocols tells me our SSH implementation is very slow).
I profiled the application, but I could only get the various % of CPU time spent by methods. I eliminated the obvious time hogs (e.g. negotiate SSH without MAC calculation, etc.) but I can still not improve enough.
How can I detect dead/idle gaps along the datapath (from reading the file through my SSH encapsulation down to TCP transmission)? i.e. how can I find the places where time is spent outside of my data-delivery path, and which impacts the rate of data delivery. Does anybody out there have a suggestion (which profiling tools/approaches/techniques) can be used to find the ?