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
					
				
					 2 changed files with 38 additions and 0 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue