authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-09-20 19:30:52 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-09-20 19:30:52 -07:00
loga07c38b8d06036616030520e3839b9052e6332cf
treee83bd7a9537ae9f7ffcd0382c6c096d94f65e5bd
parentef56eae6262d4a1e6c866c47be418755ef2b9108

spall: use a buffered writer for the log


1 files changed, 8 insertions(+), 4 deletions(-)

src/spall.zig+8-4
......@@ -9,6 +9,7 @@ var pid: std.os.linux.pid_t = undefined;
99threadlocal var tid: std.os.linux.pid_t = undefined;
1010threadlocal var path: []const u8 = undefined;
1111threadlocal var file: std.fs.File = undefined;
12threadlocal var buffered_writer: std.io.BufferedWriter(4096, std.fs.File.Writer) = undefined;
1213
1314pub fn init() !void {
1415 pid = std.os.linux.getpid();
......@@ -23,19 +24,22 @@ pub fn init2() !void {
2324
2425 path = try std.fmt.allocPrint(alloc, "/data/trace.{d}.{d}.spall.jsonl", .{ pid, tid });
2526 file = try std.fs.cwd().createFile(path, .{});
26 try file.writer().writeAll("[\n");
27 buffered_writer = std.io.bufferedWriter(file.writer());
28
29 try buffered_writer.writer().writeAll("[\n");
2730}
2831
2932pub fn deinit2() void {
3033 defer alloc.free(path);
3134 defer file.close();
3235
33 file.writer().writeAll("]\n") catch {};
36 buffered_writer.writer().writeAll("]\n") catch {};
37 buffered_writer.flush() catch {};
3438 log.debug("{s}", .{path});
3539}
3640
3741pub inline fn trace_begin(ctx: tracer.Ctx) void {
38 file.writer().print(
42 buffered_writer.writer().print(
3943 \\{{"cat":"function", "name":"{s}:{d}:{d} ({s})", "ph": "B", "pid": {d}, "tid": {d}, "ts": {d}}},
4044 \\
4145 ,
......@@ -53,7 +57,7 @@ pub inline fn trace_begin(ctx: tracer.Ctx) void {
5357
5458pub inline fn trace_end(ctx: tracer.Ctx) void {
5559 _ = ctx;
56 file.writer().print(
60 buffered_writer.writer().print(
5761 \\{{"cat":"function", "ph": "E", "pid": {d}, "tid": {d}, "ts": {d}}},
5862 \\
5963 ,