I'm trying to duplicate the following kstat code in jkstat: # kstat -p cpu_stat:::execpgin cpu_stat:0:cpu_stat0:execpgin 57553 cpu_stat:1:cpu_stat1:execpgin 53963 . .
It doesn't look like you can use a filter to directly gather the kstat information using jkstat. The filter's "getKstats()" method returns a Set of Kstats, with the module, instance, and name variables populated, but the actual Map of statistics is empty. So, in order to actually get the statistics, I had to create the filter, get the Set of "empty" Kstats, then run "getKstat()" on each of them to actually get the statistic data. Is there a better way to do this? My java code is below: <pre> // Initialize JKstat and filter JKstat jkstat = new JKstat(); KstatFilter ksf = new KstatFilter(jkstat); ksf.addFilter("cpu_stat:::"); // Get the list of empty Kstats Set <Kstat> vfilter = ksf.getKstats(); // Now iterate through them Iterator kItr = vfilter.iterator(); while(kItr.hasNext()) { Kstat kstat = (Kstat)kItr.next(); // Use empty Kstat module, instance, and name data to get the statistic information Kstat kstat2 = jkstat.getKstat(kstat.getModule(),kstat.getInst(),kstat.getName()); Map <String, KstatData> kstat2Map = kstat2.getMap(); KstatData execpgin2Data = kstat2Map.get("execpgin"); System.out.println(kstat2.getTriplet() + ":execpgin: " + (Long)execpginData2.getData()); } </pre> -- This messages posted from opensolaris.org