1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
| 1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
|
+
| (tt:write-load-tracking dbdir)
(mutex-unlock! *journal-stats-mutex*)
(thread-sleep! (/ (random 1000) 100.0))
(loop)))
;; call this to start a thread that is keeping the journal-stats up to date.
(define (tt:start-stats dbdir)
(thread-start!
(make-thread
(lambda ()(tt:journal-stats-run dbdir)) "Journal stats collection thread")))
(define (tt:get-journal-stats)
(let* ((result (make-jstats))
(hitcounts (jstats-jcount result)))
|
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
| 1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
|
-
+
-
| (debug:print 0 *default-log-port* "INFO: *journal-stats* not set."))
;; convert to normalized alist
(let ((tot (min (jstats-count result) 1)) ;; avoid divide by zero
(hits (jstats-jcount result))) ;; 1.db => count
(hash-table-map
hits
(lambda (fname hitcount)
(cons fname (/ hitcount tot)))))
(cons fname (/ hitcount tot)))))))
))
;; megatest> (import tcp-transportmod)
;; megatest> (tt:write-load-tracking ".mtdb")
;; megatest> (hash-table-keys *journal-stats*)
;; (172060297)
;; megatest> (jstats->alist (hash-table-ref *journal-stats* 172060297))
;; ((count . 1) (jcount . #<hash-table (1)>))
;; megatest> (jstats-jcount (hash-table-ref *journal-stats* 172060297))
;; #<hash-table (1)>
;; megatest> (hash-table->alist (jstats-jcount (hash-table-ref *journal-stats* 172060297)))
;; (("1.db" . 4))
)
|