add resource usage stats when built in debug mode
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 1m6s
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 1m6s
This commit is contained in:
parent
31b363bc0d
commit
5f1b1a52be
|
@ -72,11 +72,30 @@ fn handleRequest(allocator: std.mem.Allocator, response: *interface.ZigResponse)
|
||||||
ul_response.request.target = response.request.target;
|
ul_response.request.target = response.request.target;
|
||||||
ul_response.request.headers = response.request.headers;
|
ul_response.request.headers = response.request.headers;
|
||||||
ul_response.request.method = std.meta.stringToEnum(std.http.Method, response.request.method) orelse std.http.Method.GET;
|
ul_response.request.method = std.meta.stringToEnum(std.http.Method, response.request.method) orelse std.http.Method.GET;
|
||||||
|
const builtin = @import("builtin");
|
||||||
|
const supports_getrusage = builtin.os.tag != .windows and @hasDecl(std.os.system, "rusage"); // Is Windows it?
|
||||||
|
var rss: if (supports_getrusage) std.os.rusage else void = undefined;
|
||||||
|
if (supports_getrusage and builtin.mode == .Debug)
|
||||||
|
rss = std.os.getrusage(std.os.rusage.SELF);
|
||||||
const response_content = try handler.?(
|
const response_content = try handler.?(
|
||||||
allocator,
|
allocator,
|
||||||
response.request.content,
|
response.request.content,
|
||||||
&ul_response,
|
&ul_response,
|
||||||
);
|
);
|
||||||
|
if (supports_getrusage and builtin.mode == .Debug) { // and debug mode) {
|
||||||
|
const rusage = std.os.getrusage(std.os.rusage.SELF);
|
||||||
|
log.debug(
|
||||||
|
"Request complete, max RSS of process: {d}M. Incremental: {d}K, User: {d}μs, System: {d}μs",
|
||||||
|
.{
|
||||||
|
@divTrunc(rusage.maxrss, 1024),
|
||||||
|
rusage.maxrss - rss.maxrss,
|
||||||
|
(rusage.utime.tv_sec - rss.utime.tv_sec) * std.time.us_per_s +
|
||||||
|
rusage.utime.tv_usec - rss.utime.tv_usec,
|
||||||
|
(rusage.stime.tv_sec - rss.stime.tv_sec) * std.time.us_per_s +
|
||||||
|
rusage.stime.tv_usec - rss.stime.tv_usec,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
// Copy any headers
|
// Copy any headers
|
||||||
for (ul_response.headers.list.items) |entry| {
|
for (ul_response.headers.list.items) |entry| {
|
||||||
try response.headers.append(entry.name, entry.value);
|
try response.headers.append(entry.name, entry.value);
|
||||||
|
|
|
@ -94,12 +94,31 @@ fn runStandaloneServer(allocator: ?std.mem.Allocator, event_handler: interface.H
|
||||||
aa = arena.allocator();
|
aa = arena.allocator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const builtin = @import("builtin");
|
||||||
|
const supports_getrusage = builtin.os.tag != .windows and @hasDecl(std.os.system, "rusage"); // Is Windows it?
|
||||||
|
var rss: if (supports_getrusage) std.os.rusage else void = undefined;
|
||||||
|
if (supports_getrusage and builtin.mode == .Debug)
|
||||||
|
rss = std.os.getrusage(std.os.rusage.SELF);
|
||||||
processRequest(aa, &server, event_handler) catch |e| {
|
processRequest(aa, &server, event_handler) catch |e| {
|
||||||
log.err("Unexpected error processing request: {any}", .{e});
|
log.err("Unexpected error processing request: {any}", .{e});
|
||||||
if (@errorReturnTrace()) |trace| {
|
if (@errorReturnTrace()) |trace| {
|
||||||
std.debug.dumpStackTrace(trace.*);
|
std.debug.dumpStackTrace(trace.*);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
if (supports_getrusage and builtin.mode == .Debug) { // and debug mode) {
|
||||||
|
const rusage = std.os.getrusage(std.os.rusage.SELF);
|
||||||
|
log.debug(
|
||||||
|
"Request complete, max RSS of process: {d}M. Incremental: {d}K, User: {d}μs, System: {d}μs",
|
||||||
|
.{
|
||||||
|
@divTrunc(rusage.maxrss, 1024),
|
||||||
|
rusage.maxrss - rss.maxrss,
|
||||||
|
(rusage.utime.tv_sec - rss.utime.tv_sec) * std.time.us_per_s +
|
||||||
|
rusage.utime.tv_usec - rss.utime.tv_usec,
|
||||||
|
(rusage.stime.tv_sec - rss.stime.tv_sec) * std.time.us_per_s +
|
||||||
|
rusage.stime.tv_usec - rss.stime.tv_usec,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user