Skip to main content Svelte Highlight v7.21.1

DTrace language preview

1. Tracing read latency

a shebang, a pragma, probe descriptions, and an aggregation
horizon-dark
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}
atom-one-dark
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}
github-dark
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}
dracula
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}
nord
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}
github
#!/usr/sbin/dtrace -s
/* trace slow reads */
#pragma D option quiet

syscall::read:entry
{
    self->start = timestamp;
}

syscall::read:return
/self->start/
{
    @counts[execname] = count();
    printf("%s took %d ns\n", execname, timestamp - self->start);
    self->start = 0;
}

2. Process-scoped probes

the pid$target provider and positional arguments
horizon-dark
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}
atom-one-dark
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}
github-dark
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}
dracula
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}
nord
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}
github
pid$target:::entry
{
    printf("entered %s\n", probefunc);
}

pid$target:::return
{
    printf("returned from %s\n", probefunc);
}

3. Aggregation functions

quantize and sum aggregations
horizon-dark
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}
atom-one-dark
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}
github-dark
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}
dracula
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}
nord
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}
github
syscall:::entry
{
    @dist[probefunc] = quantize(timestamp);
    @total = sum(1);
}