I have a simple Multithreaded program that is calling an External API and get the response back from that API. I am using RestTemplate.
Problem Statement:-
I am trying to find out
What is the estimated CPU and IO time for these calls?
I am working in Ubuntu.
Below is my program-
public class RestLnPTest {
    private final static Logger LOG = Logger.getLogger(NokiaLnPTest.class.getName());
    private static int noOfThreads = 10;
    public static void main(String[] args) {
        ExecutorService service = Executors.newFixedThreadPool(noOfThreads);
        try {
            for (int i = 0; i < 100 * noOfThreads; i++) {
                service.submit(new ThreadTask());
            }
            service.shutdown();
            service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
        } catch (InterruptedException e) {
        } catch (Exception e) {
        } finally {
            logHistogramInfo();
        }
    }
    private static void logHistogramInfo() {
     System.out.println(ThreadTask.lookupHistogram);
    }
}
class ThreadTask implements Runnable {
    public static ConcurrentHashMap<Long, AtomicLong> lookupHistogram = new ConcurrentHashMap<Long, AtomicLong>();
    private static final String URL = "SOME_URL";
    @Override
    public void run() {
        RestTemplate restTemplate = new RestTemplate();
        long start = System.nanoTime();
        String result = restTemplate.getForObject(URL, String.class);
        long end = System.nanoTime() - start;
        final AtomicLong before = lookupHistogram.putIfAbsent(end / 1000000, new AtomicLong(1L));
        if (before != null) {
            before.incrementAndGet();
        }
    }
}
I am running the above program from Command Line in Ubuntu as-
java - jar REST.jar
Can anyone tell me in step by step how to figure it out CPU and IO time for these calls in Unix environment?. I needed just rough estimate of these calls.
 
    