#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (C) 2018-present ScyllaDB # # # SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0 # # Guess and print out a good number of compiler jobs to # run. Note that on an interactive desktop you will want # to reduce this to allow more memory for your desktop, # to avoid swapping. This is oriented at continuous # integration machines that do not serve an interactive # load as well. import os procs = os.sysconf('SC_NPROCESSORS_ONLN') mem = os.sysconf('SC_PHYS_PAGES') * os.sysconf('SC_PAGESIZE') mem_reserve = 1000000000 job_mem = 4000000000 jobs = min(procs, (mem-mem_reserve) // job_mem) jobs = max(jobs, 1) print(jobs)