GNU/Linux >> Znalost Linux >  >> Linux

docker, openmpi a neočekávaný konec řádku /proc/mounts

Pravděpodobně je to způsobeno vaším /proc/mount soubor, který má v sobě řádek delší než 512 znaků, což způsobuje, že modul hwloc OpenMPI jej nedokáže správně analyzovat. Docker má tendenci vkládat velmi dlouhé řádky do /proc/mounts . Chybu můžete vidět v openmpi-1.10.7/opal/mca/hwloc/hwloc191/hwloc/src/topology-linux.c:1677 :

static void
hwloc_find_linux_cpuset_mntpnt(char **cgroup_mntpnt, char **cpuset_mntpnt, int fsroot_fd)
{
#define PROC_MOUNT_LINE_LEN 512
  char line[PROC_MOUNT_LINE_LEN];
  FILE *fd;

  *cgroup_mntpnt = NULL;
  *cpuset_mntpnt = NULL;

  /* ideally we should use setmntent, getmntent, hasmntopt and endmntent,
   * but they do not support fsroot_fd.
   */

  fd = hwloc_fopen("/proc/mounts", "r", fsroot_fd);
  if (!fd)
    return;

To lze opravit zvýšením hodnoty PROC_MOUNT_LINE_LEN , ačkoli by to mělo být považováno za dočasné řešení.


Tento problém by měl být opraven v hwloc od 1.11.3 (vydáno před 2 lety). Můžete buď upgradovat na OpenMPI 3.0, který obsahuje hwloc 1.11.7>=1.11.3. Nebo znovu zkompilujte OpenMPI tak, aby místo starého vloženého hwloc používal externí hwloc.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  1. /proc/[pid]/pagemaps a /proc/[pid]/maps | linux

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. Rozdíl mezi /bin a /usr/bin

  1. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Jaký je rozdíl mezi /tmp a /run?