public static FixedSizedObjectPool<IoTrace> createTracePool(Configuration conf) {
    final int ioTraceSize = (int)HiveConf.getSizeVar(conf, ConfVars.LLAP_IO_TRACE_SIZE);
    final boolean isAlwaysDump = HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_TRACE_ALWAYS_DUMP);
    int ioThreads = HiveConf.getIntVar(conf, ConfVars.LLAP_IO_THREADPOOL_SIZE);
    return new FixedSizedObjectPool<>(ioThreads, new Pool.PoolObjectHelper<IoTrace>() {
      @Override
      public IoTrace create() {
        return new IoTrace(ioTraceSize, isAlwaysDump);
      }

      @Override
      public void resetBeforeOffer(IoTrace t) {
        t.reset();
      }
    });
  }
Single threaded IO trace.
Note: this can be made MTT merely by using an AtomicInteger, and storing a thread ID.
ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/IoTrace.java