Skip to content

Commit 59843e6

Browse files
committed
Driver: Show what is being done
1 parent b84c919 commit 59843e6

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

src/driver/odoc_driver.ml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,12 @@ let render_stats env nprocs =
459459
let open Progress.Line in
460460
list [ lpad 16 (const "Processes"); bar total; count_to total ]
461461
in
462+
let description =
463+
let open Progress.Line in
464+
string
465+
in
466+
let descriptions = Multi.lines (List.init nprocs (fun _ -> description)) in
467+
462468
let non_hidden = Atomic.get Stats.stats.non_hidden_units in
463469

464470
let dline x y = Multi.line (bar x y) in
@@ -472,8 +478,9 @@ let render_stats env nprocs =
472478
++ dline "Linking mlds" total_mlds
473479
++ dline "Indexes" 10000 (* TODO *)
474480
++ dline "HTML" (total_impls + non_hidden + total_mlds)
475-
++ line (procs nprocs))
476-
(fun comp compimpl compmld link linkimpl linkmld indexes html procs ->
481+
++ line (procs nprocs)
482+
++ descriptions)
483+
(fun comp compimpl compmld link linkimpl linkmld indexes html procs descr ->
477484
let rec inner (a, b, c, d, e, f, i, g, h) =
478485
Eio.Time.sleep clock 0.1;
479486
let a' = Atomic.get Stats.stats.compiled_units in
@@ -485,7 +492,9 @@ let render_stats env nprocs =
485492
let i' = Atomic.get Stats.stats.generated_indexes in
486493
let g' = Atomic.get Stats.stats.generated_units in
487494
let h' = Atomic.get Stats.stats.processes in
488-
495+
List.iteri
496+
(fun i descr -> descr (Atomic.get Stats.stats.process_activity.(i)))
497+
descr;
489498
comp (a' - a);
490499
compimpl (b' - b);
491500
compmld (c' - c);
@@ -508,6 +517,7 @@ let run libs verbose packages_dir odoc_dir odocl_dir html_dir stats nb_workers
508517
Eio.Switch.run @@ fun sw ->
509518
if verbose then Logs.set_level (Some Logs.Debug);
510519
Logs.set_reporter (Logs_fmt.reporter ());
520+
Stats.init_nprocs nb_workers;
511521
let () = Worker_pool.start_workers env sw nb_workers in
512522

513523
let all =

src/driver/stats.ml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type stats = {
1616
mutable generated_indexes : int Atomic.t;
1717
mutable generated_units : int Atomic.t;
1818
mutable processes : int Atomic.t;
19+
mutable process_activity : string Atomic.t Array.t;
1920
}
2021

2122
let stats =
@@ -33,8 +34,12 @@ let stats =
3334
generated_units = Atomic.make 0;
3435
generated_indexes = Atomic.make 0;
3536
processes = Atomic.make 0;
37+
process_activity = [||];
3638
}
3739

40+
let init_nprocs nprocs =
41+
stats.process_activity <- Array.init nprocs (fun _ -> Atomic.make "idle")
42+
3843
let pp_stats fmt stats =
3944
Fmt.pf fmt
4045
"Total units: %d\n\

src/driver/worker_pool.ml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ let stream : t = Eio.Stream.create 0
1717
let handle_job env request output_file = Run.run env request output_file
1818

1919
let rec run_worker env id : unit =
20-
let { request; output_file; description = _ }, reply =
21-
Eio.Stream.take stream
22-
in
20+
let { request; output_file; description }, reply = Eio.Stream.take stream in
2321
Atomic.incr Stats.stats.processes;
22+
Atomic.set Stats.stats.process_activity.(id) description;
2423
(try
2524
let result = handle_job env request output_file in
2625
Atomic.decr Stats.stats.processes;
26+
Atomic.set Stats.stats.process_activity.(id) "idle";
2727
Promise.resolve reply (Ok result)
2828
with e -> Promise.resolve_error reply e);
2929
run_worker env id
@@ -41,7 +41,7 @@ let start_workers env sw n =
4141
`Stop_daemon
4242
with Stdlib.Exit -> `Stop_daemon)
4343
in
44-
for i = 1 to n do
45-
spawn_worker (Printf.sprintf "%d" i)
44+
for i = 0 to n - 1 do
45+
spawn_worker i
4646
done;
4747
()

0 commit comments

Comments
 (0)