code: def _scale_jobs_to_memory(jobs, mem_per_core, sysinfo):
      
      if "cores" not in sysinfo:
          return jobs, 1.0
      sys_mem_per_core = float(sysinfo["memory"]) / float(sysinfo["cores"])
      if sys_mem_per_core < mem_per_core:
          pct = sys_mem_per_core / float(mem_per_core)
          target_jobs = int(math.floor(jobs * pct))
          return max(target_jobs, 1), pct
      else:
          return jobs, 1.0
docs: When scheduling jobs with single cores, avoid overscheduling due to memory.