~vcs-imports/procps/main

« back to all changes in this revision

Viewing changes to vmstat.c

  • Committer: albert
  • Date: 2006-06-25 02:15:35 UTC
  • Revision ID: Arch-1:procps@products.ubuntu.com%procps--MAIN--0--patch-500
top: show CPU time stolen from a virtual machine

Show diffs side-by-side

added added

removed removed

Lines of Context:
150
150
////////////////////////////////////////////////////////////////////////////
151
151
 
152
152
static void new_header(void){
153
 
  printf("procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----\n");
 
153
  printf("procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----\n");
154
154
  printf(
155
 
    "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %5s %2s %2s %2s %2s\n",
 
155
    "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s\n",
156
156
    "r","b",
157
157
    "swpd", "free", a_option?"inact":"buff", a_option?"active":"cache",
158
158
    "si","so",
173
173
////////////////////////////////////////////////////////////////////////////
174
174
 
175
175
static void new_format(void) {
176
 
  const char format[]="%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %5u %2u %2u %2u %2u\n";
 
176
  const char format[]="%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u\n";
177
177
  unsigned int tog=0; /* toggle switch for cleaner code */
178
178
  unsigned int i;
179
179
  unsigned int hz = Hertz;
180
180
  unsigned int running,blocked,dummy_1,dummy_2;
181
 
  jiff cpu_use[2], cpu_nic[2], cpu_sys[2], cpu_idl[2], cpu_iow[2], cpu_xxx[2], cpu_yyy[2];
182
 
  jiff duse, dsys, didl, diow, Div, divo2;
 
181
  jiff cpu_use[2], cpu_nic[2], cpu_sys[2], cpu_idl[2], cpu_iow[2], cpu_xxx[2], cpu_yyy[2], cpu_zzz[2];
 
182
  jiff duse, dsys, didl, diow, dstl, Div, divo2;
183
183
  unsigned long pgpgin[2], pgpgout[2], pswpin[2], pswpout[2];
184
184
  unsigned int intr[2], ctxt[2];
185
185
  unsigned int sleep_half; 
190
190
  new_header();
191
191
  meminfo();
192
192
 
193
 
  getstat(cpu_use,cpu_nic,cpu_sys,cpu_idl,cpu_iow,cpu_xxx,cpu_yyy,
 
193
  getstat(cpu_use,cpu_nic,cpu_sys,cpu_idl,cpu_iow,cpu_xxx,cpu_yyy,cpu_zzz,
194
194
          pgpgin,pgpgout,pswpin,pswpout,
195
195
          intr,ctxt,
196
196
          &running,&blocked,
200
200
  dsys= *cpu_sys + *cpu_xxx + *cpu_yyy;
201
201
  didl= *cpu_idl;
202
202
  diow= *cpu_iow;
203
 
  Div= duse+dsys+didl+diow;
 
203
  dstl= *cpu_zzz;
 
204
  Div= duse+dsys+didl+diow+dstl;
204
205
  divo2= Div/2UL;
205
206
  printf(format,
206
207
         running, blocked,
216
217
         (unsigned)( (100*duse                    + divo2) / Div ),
217
218
         (unsigned)( (100*dsys                    + divo2) / Div ),
218
219
         (unsigned)( (100*didl                    + divo2) / Div ),
219
 
         (unsigned)( (100*diow                    + divo2) / Div )
 
220
         (unsigned)( (100*diow                    + divo2) / Div ) /* ,
 
221
         (unsigned)( (100*dstl                    + divo2) / Div ) */
220
222
  );
221
223
 
222
224
  for(i=1;i<num_updates;i++) { /* \\\\\\\\\\\\\\\\\\\\ main loop ////////////////// */
226
228
 
227
229
    meminfo();
228
230
 
229
 
    getstat(cpu_use+tog,cpu_nic+tog,cpu_sys+tog,cpu_idl+tog,cpu_iow+tog,cpu_xxx+tog,cpu_yyy+tog,
 
231
    getstat(cpu_use+tog,cpu_nic+tog,cpu_sys+tog,cpu_idl+tog,cpu_iow+tog,cpu_xxx+tog,cpu_yyy+tog,cpu_zzz+tog,
230
232
          pgpgin+tog,pgpgout+tog,pswpin+tog,pswpout+tog,
231
233
          intr+tog,ctxt+tog,
232
234
          &running,&blocked,
236
238
    dsys= cpu_sys[tog]-cpu_sys[!tog] + cpu_xxx[tog]-cpu_xxx[!tog] + cpu_yyy[tog]-cpu_yyy[!tog];
237
239
    didl= cpu_idl[tog]-cpu_idl[!tog];
238
240
    diow= cpu_iow[tog]-cpu_iow[!tog];
 
241
    dstl= cpu_zzz[tog]-cpu_zzz[!tog];
239
242
 
240
243
    /* idle can run backwards for a moment -- kernel "feature" */
241
244
    if(debt){
247
250
      didl = 0;
248
251
    }
249
252
 
250
 
    Div= duse+dsys+didl+diow;
 
253
    Div= duse+dsys+didl+diow+dstl;
251
254
    divo2= Div/2UL;
252
255
    printf(format,
253
256
           running, blocked,
263
266
           (unsigned)( (100*duse+divo2)/Div ), /*us*/
264
267
           (unsigned)( (100*dsys+divo2)/Div ), /*sy*/
265
268
           (unsigned)( (100*didl+divo2)/Div ), /*id*/
266
 
           (unsigned)( (100*diow+divo2)/Div )  /*wa*/
 
269
           (unsigned)( (100*diow+divo2)/Div )/*, //wa
 
270
           (unsigned)( (100*dstl+divo2)/Div )  //st  */
267
271
    );
268
272
  }
269
273
}
504
508
 
505
509
static void sum_format(void) {
506
510
  unsigned int running, blocked, btime, processes;
507
 
  jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow, cpu_xxx, cpu_yyy;
 
511
  jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow, cpu_xxx, cpu_yyy, cpu_zzz;
508
512
  unsigned long pgpgin, pgpgout, pswpin, pswpout;
509
513
  unsigned int intr, ctxt;
510
514
 
511
515
  meminfo();
512
516
 
513
 
  getstat(&cpu_use, &cpu_nic, &cpu_sys, &cpu_idl, &cpu_iow, &cpu_xxx, &cpu_yyy,
 
517
  getstat(&cpu_use, &cpu_nic, &cpu_sys, &cpu_idl,
 
518
          &cpu_iow, &cpu_xxx, &cpu_yyy, &cpu_zzz,
514
519
          &pgpgin, &pgpgout, &pswpin, &pswpout,
515
520
          &intr, &ctxt,
516
521
          &running, &blocked,
533
538
  printf("%13Lu IO-wait cpu ticks\n", cpu_iow);
534
539
  printf("%13Lu IRQ cpu ticks\n", cpu_xxx);
535
540
  printf("%13Lu softirq cpu ticks\n", cpu_yyy);
 
541
  printf("%13Lu stolen cpu ticks\n", cpu_zzz);
536
542
  printf("%13lu pages paged in\n", pgpgin);
537
543
  printf("%13lu pages paged out\n", pgpgout);
538
544
  printf("%13lu pages swapped in\n", pswpin);
547
553
 
548
554
static void fork_format(void) {
549
555
  unsigned int running, blocked, btime, processes;
550
 
  jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow, cpu_xxx, cpu_yyy;
 
556
  jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow, cpu_xxx, cpu_yyy, cpu_zzz;
551
557
  unsigned long pgpgin, pgpgout, pswpin, pswpout;
552
558
  unsigned int intr, ctxt;
553
559
 
554
 
  getstat(&cpu_use, &cpu_nic, &cpu_sys, &cpu_idl, &cpu_iow, &cpu_xxx, &cpu_yyy,
 
560
  getstat(&cpu_use, &cpu_nic, &cpu_sys, &cpu_idl,
 
561
          &cpu_iow, &cpu_xxx, &cpu_yyy, &cpu_zzz,
555
562
          &pgpgin, &pgpgout, &pswpin, &pswpout,
556
563
          &intr, &ctxt,
557
564
          &running, &blocked,