Skip to content

Commit c3bbb70

Browse files
committed
Add precompile statements to improve TTFW (Time-To-First-Worker)
Before: ```julia-repl julia> @time addprocs(1) 4.592567 seconds (6.56 M allocations: 328.356 MiB, 1.24% gc time, 89.93% compilation time) 1-element Vector{Int64}: 2 julia> @time addprocs(1) 3.466125 seconds (25.68 k allocations: 1.455 MiB, 1.12% compilation time) 1-element Vector{Int64}: 3 ``` After: ```julia-repl julia> @time addprocs(1) 3.204588 seconds (3.09 M allocations: 154.957 MiB, 1.04% gc time, 71.17% compilation time) 1-element Vector{Int64}: 2 julia> @time addprocs(1) 1.932320 seconds (25.67 k allocations: 1.454 MiB, 2.07% compilation time) 1-element Vector{Int64}: 3 ``` Could probably be improved in the future. A tricky part is running SnoopCompile inside the worker to get inference results.
1 parent b9a8000 commit c3bbb70

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/precompile.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
precompile(Tuple{typeof(DistributedNext.remotecall),Function,Int,Module,Vararg{Any, 100}})
22
precompile(Tuple{typeof(DistributedNext.procs)})
33
precompile(Tuple{typeof(DistributedNext.finalize_ref), DistributedNext.Future})
4+
precompile(Tuple{typeof(DistributedNext.setup_launched_worker), DistributedNext.LocalManager, DistributedNext.WorkerConfig, Vector{Int}})
5+
precompile(Tuple{typeof(DistributedNext.process_tcp_streams), Sockets.TCPSocket, Sockets.TCPSocket, Bool})
6+
7+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.IdentifySocketMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
8+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.CallWaitMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
9+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.CallMsg{:call}, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
10+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.CallMsg{:call_fetch}, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
11+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.ResultMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
12+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.IdentifySocketAckMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
13+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.RemoteDoMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
14+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.JoinPGRPMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
15+
precompile(Tuple{typeof(DistributedNext.handle_msg), DistributedNext.JoinCompleteMsg, DistributedNext.MsgHeader, Sockets.TCPSocket, Sockets.TCPSocket, VersionNumber})
16+
417
# This is disabled because it doesn't give much benefit
518
# and the code in Distributed is poorly typed causing many invalidations
619
# TODO: Maybe reenable now that Distributed is not in sysimage.

0 commit comments

Comments
 (0)