20
21
22
23
24
25
26
27
28
29
30
31
32
33
| *
(import
(chicken process-context)
(chicken process)
(chicken string)
(chicken sort)
(chicken io)
srfi-69
scheme
)
(define *numsamples* (or (and (> (length (argv)) 1)
|
>
| 20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| *
(import
(chicken process-context)
(chicken process)
(chicken string)
(chicken base)
(chicken sort)
(chicken io)
srfi-69
scheme
)
(define *numsamples* (or (and (> (length (argv)) 1)
|
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
| (lambda (indat)
(let ((pid (car indat))
(usr (cadr indat))
(cpu (list-ref indat 8)))
(hash-table-set! ht usr (+ cpu (hash-table-ref/default ht usr 0)))))
data))
)
(import whodunit srfi-69 (chicken sort))
(print "Getting " *numsamples* " samples of cpu usage data.")
(define data (cleanup-data (topdata)))
(define pidhash (make-hash-table))
(define userhash (make-hash-table))
(sum-up data userhash)
(for-each
(lambda (usr)
(let* ((usage (inexact->exact (round (/ (hash-table-ref userhash usr) *numsamples*)))))
(if (> usage 0)
(print usr (if (< (string-length usr) 8) "\t\t" "\t") usage))))
(sort (hash-table-keys userhash)
(lambda (a b)
(> (hash-table-ref userhash a)
(hash-table-ref userhash b)))))
|
>
>
>
>
>
>
>
>
>
>
>
<
<
<
<
<
<
|
<
<
<
<
| 60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| (lambda (indat)
(let ((pid (car indat))
(usr (cadr indat))
(cpu (list-ref indat 8)))
(hash-table-set! ht usr (+ cpu (hash-table-ref/default ht usr 0)))))
data))
(define (print-results userhash)
(for-each
(lambda (usr)
(let* ((usage (inexact->exact (round (/ (hash-table-ref userhash usr) *numsamples*)))))
(if (> usage 0)
(print usr (if (< (string-length usr) 8) "\t\t" "\t") usage))))
(sort (hash-table-keys userhash)
(lambda (a b)
(> (hash-table-ref userhash a)
(hash-table-ref userhash b))))))
)
(import whodunit srfi-69 (chicken sort))
(print "Getting " *numsamples* " samples of cpu usage data.")
(define data (cleanup-data (topdata)))
(define pidhash (make-hash-table))
(define userhash (make-hash-table))
(sum-up data userhash)
(print-results userhash)
|