Home | History | Annotate | Download | only in kern

Lines Matching defs:stats

140 	struct io_stats *stats;
142 stats = kmem_zalloc(sizeof(*stats), KM_SLEEP);
143 stats->io_type = type;
144 stats->io_parent = parent;
145 (void)strlcpy(stats->io_name, name, sizeof(stats->io_name));
150 getmicrouptime(&stats->io_attachtime);
156 TAILQ_INSERT_TAIL(&iostatlist, stats, io_link);
160 return stats;
164 * Remove i/o from stats collection.
167 iostat_free(struct io_stats *stats)
176 TAILQ_REMOVE(&iostatlist, stats, io_link);
179 kmem_free(stats, sizeof(*stats));
183 * Rename i/o stats.
186 iostat_rename(struct io_stats *stats, const char *name)
190 (void)strlcpy(stats->io_name, name, sizeof(stats->io_name));
217 iostat_wait(struct io_stats *stats)
222 KASSERT(stats->io_wait >= 0);
226 timersub(&dv_time, &stats->io_waitstamp, &diff_time);
227 count = stats->io_wait++;
229 timermac(&diff_time, count, &stats->io_waitsum);
230 timeradd(&stats->io_waittime, &diff_time, &stats->io_waittime);
232 stats->io_waitstamp = dv_time;
246 iostat_busy(struct io_stats *stats)
251 KASSERT(stats->io_wait >= 0); /* > 0 when iostat_wait is used */
252 KASSERT(stats->io_busy >= 0);
256 timersub(&dv_time, &stats->io_waitstamp, &diff_time);
257 if (stats->io_wait != 0) {
258 count = stats->io_wait--;
259 timermac(&diff_time, count, &stats->io_waitsum);
260 timeradd(&stats->io_waittime, &diff_time, &stats->io_waittime);
262 stats->io_waitstamp = dv_time;
264 timersub(&dv_time, &stats->io_busystamp, &diff_time);
265 count = stats->io_busy++;
267 timermac(&diff_time, count, &stats->io_busysum);
268 timeradd(&stats->io_busytime, &diff_time, &stats->io_busytime);
270 stats->io_busystamp = dv_time;
278 iostat_unbusy(struct io_stats *stats, long bcount, int read)
283 KASSERT(stats->io_busy > 0);
286 stats->io_timestamp = dv_time;
289 timersub(&dv_time, &stats->io_busystamp, &diff_time);
290 count = stats->io_busy--;
291 timermac(&diff_time, count, &stats->io_busysum);
292 timeradd(&stats->io_busytime, &diff_time, &stats->io_busytime);
293 stats->io_busystamp = dv_time;
297 stats->io_rbytes += bcount;
298 stats->io_rxfer++;
300 stats->io_wbytes += bcount;
301 stats->io_wxfer++;
310 iostat_isbusy(struct io_stats *stats)
313 return stats->io_busy != 0;
318 * abstracts the stats gathering.
321 iostat_seek(struct io_stats *stats)
324 stats->io_seek++;
347 struct io_stats *stats;
362 for (stats = TAILQ_FIRST(&iostatlist); stats != NULL;
363 stats = TAILQ_NEXT(stats, io_link)) {
364 if ((disk_only == 1) && (stats->io_type != IOSTAT_DISK))
368 needed += strlen(stats->io_name) + 1;
372 strncpy(bf, stats->io_name, sizeof(bf));
378 strncpy(bf + 1, stats->io_name,
403 struct io_stats *stats;
432 TAILQ_FOREACH(stats, &iostatlist, io_link) {
436 strncpy(sdrive.name, stats->io_name, sizeof(sdrive.name));
437 sdrive.attachtime_sec = stats->io_attachtime.tv_sec;
438 sdrive.attachtime_usec = stats->io_attachtime.tv_usec;
439 sdrive.timestamp_sec = stats->io_busystamp.tv_sec;
440 sdrive.timestamp_usec = stats->io_busystamp.tv_usec;
442 sdrive.time_sec = stats->io_busytime.tv_sec;
443 sdrive.time_usec = stats->io_busytime.tv_usec;
445 sdrive.seek = stats->io_seek;
447 sdrive.rxfer = stats->io_rxfer;
448 sdrive.wxfer = stats->io_wxfer;
449 sdrive.xfer = stats->io_rxfer + stats->io_wxfer;
451 sdrive.rbytes = stats->io_rbytes;
452 sdrive.wbytes = stats->io_wbytes;
453 sdrive.bytes = stats->io_rbytes + stats->io_wbytes;
455 sdrive.wait_sec = stats->io_waittime.tv_sec;
456 sdrive.wait_usec = stats->io_waittime.tv_usec;
458 sdrive.time_sec = stats->io_busytime.tv_sec;
459 sdrive.time_usec = stats->io_busytime.tv_usec;
461 sdrive.waitsum_sec = stats->io_waitsum.tv_sec;
462 sdrive.waitsum_usec = stats->io_waitsum.tv_usec;
464 sdrive.busysum_sec = stats->io_busysum.tv_sec;
465 sdrive.busysum_usec = stats->io_busysum.tv_usec;
467 sdrive.busy = stats->io_busy;
493 SYSCTL_DESCR("I/O stats are being collected for these"