Skip to content

Commit 955819c

Browse files
: logging: include pid in create_file_writer (#892)
Summary: `fbcode//monarch/hyperactor_mesh:hyperactor_mesh_proxy_test` is a standalone self bootstrapping program that uses `ProcessAllocator` to do the following: - the driver creates a proc/process to host a `ProxyActor` - initialization of the `ProxyActor` on the new proc/process creates a proc/process to host a `TestActor` so, executing this program creates a 3 level process hierarchy `driver -> parent -> grandchild` where the `parent` process hosts a single proc/process (rank = 0) with one `ProxyActor` and the `grandchild` a single proc/process (rank = 0) with one `TestActor`. using this program, i observe that as things stand, logs from the parent and the grandchild (since they share a common rank) are merged in the one file `/tmp/$USER/monarch_log_0.stdout`. this diff disambiguates proc logs by incorporating the process ID of the mesh owner into the proc's log file name. so, for example, now there will be logs `monarch_log_3529266_0.stdout` (capturing the logs of the parent proc) and `monarch_log_3530444_0.stdout` (capturing the logs of the grandchild proc). Differential Revision: D80349615
1 parent cce99fb commit 955819c

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

hyperactor_mesh/src/logging.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,13 @@ fn create_file_writer(
383383
let (path, filename) = log_file_path(env)?;
384384
let path = Path::new(&path);
385385
let mut full_path = PathBuf::from(path);
386-
full_path.push(format!("{}_{}.{}", filename, local_rank, suffix));
386+
full_path.push(format!(
387+
"{}_{}_{}.{}",
388+
filename,
389+
std::process::id(), // "owner" of the mesh
390+
local_rank,
391+
suffix
392+
));
387393
let file = std::fs::OpenOptions::new()
388394
.create(true)
389395
.append(true)

0 commit comments

Comments
 (0)