"fern/pages/design-docs/disagg-serving.md" did not exist on "c6b59045792cbf834ff9e9ae7a5828cab48c453b"
syscall_latency.bt 1.13 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env bpftrace
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//
// Top slow syscalls (write, epoll_wait, futex, sendmsg).
// Identifies which syscalls are consuming time in the frontend.
//
// Usage: sudo bpftrace syscall_latency.bt
//        sudo bpftrace -p <PID> syscall_latency.bt

tracepoint:raw_syscalls:sys_enter
/comm == "tokio-runtime-w" || comm == "dynamo-frontend"/
{
    @start[tid] = nsecs;
    @syscall_id[tid] = args.id;
}

tracepoint:raw_syscalls:sys_exit
/@start[tid]/
{
    $delta = nsecs - @start[tid];
    $id = @syscall_id[tid];

    // Only record syscalls taking > 10us
    if ($delta > 10000) {
        @latency_us[$id] = hist($delta / 1000);
        @slow_count[$id] = count();
    }

    delete(@start[tid]);
    delete(@syscall_id[tid]);
}

interval:s:10
{
    printf("\n--- Slow Syscall Latency (us) by syscall number ---\n");
    print(@latency_us);
    printf("\n--- Slow Syscall Count ---\n");
    print(@slow_count, 10);
    clear(@latency_us);
    clear(@slow_count);
}

END
{
    clear(@start);
    clear(@syscall_id);
}