From f3d10494a3bbb72fc9d703c020517eb2d6ca5435 Mon Sep 17 00:00:00 2001 From: edoapra Date: Wed, 12 Jul 2023 19:22:08 -0700 Subject: [PATCH] patch for mpi-pr too many open files https://github.com/GlobalArrays/ga/pull/310 --- src/tools/get-tools-github | 1 + src/tools/mpipr-too-many_patch.sh | 49 +++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 src/tools/mpipr-too-many_patch.sh diff --git a/src/tools/get-tools-github b/src/tools/get-tools-github index 74673731d8..61f60d369c 100755 --- a/src/tools/get-tools-github +++ b/src/tools/get-tools-github @@ -204,6 +204,7 @@ if [[ -d "ga-5.8.2" ]]; then if [[ ! -f "ga-5.8.2/patched581" ]]; then ./gamalloc_patch.sh $GA_DIR ./peigstubs_patch.sh $GA_DIR + ./mpipr-too-many_patch.sh $GA_DIR echo patched touch ga-5.8.2/patched581 fi diff --git a/src/tools/mpipr-too-many_patch.sh b/src/tools/mpipr-too-many_patch.sh new file mode 100755 index 0000000000..b676a6a96b --- /dev/null +++ b/src/tools/mpipr-too-many_patch.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +rm -f mpipr-too-many.patch +cat > mpipr-too-many.patch < 0) { + newspace = (long) ( size*(g_state.node_size -1)); + // }else{ +@@ -7248,3 +7250,24 @@ + #endif + #endif + } ++ ++STATIC void count_open_fds(void) { ++ FILE *f = fopen("/proc/sys/fs/file-nr", "r"); ++ ++ long nfiles, unused, maxfiles; ++ fscanf(f, "%ld %ld %ld", &nfiles, &unused, &maxfiles); ++#ifdef DEBUGSHM ++ if(nfiles % 1000 == 0) fprintf(stderr," %d: no. open files = %ld maxfiles = %ld\n", g_state.rank, nfiles, maxfiles); ++#endif ++ long mylimit = (maxfiles/100)*60; ++ if(nfiles > (maxfiles/100)*60) { ++ printf(" %d: running out of files; files = %ld maxfiles = %ld\n", g_state.rank, nfiles, maxfiles); ++#if PAUSE_ON_ERROR ++ fprintf(stderr,"%d(%d): too many open files\n", ++ g_state.rank, getpid()); ++ pause(); ++#endif ++ comex_error("count_open_fds: too many open files", -1); ++ } ++ fclose(f); ++} +EOF +patch -p0 -s -N < mpipr-too-many.patch +echo mpipr-too-many.patch applied