def get_sched_param_from_pid(pid):
    scheduler = os.sched_getscheduler(pid)
    if scheduler == os.SCHED_RR:
        priority = os.sched_getparam(pid).sched_priority
    else:
        assert scheduler == os.SCHED_OTHER
        priority = -1
    cpus = list(os.sched_getaffinity(pid))
    cpus_all = list(range(os.cpu_count()))
    if cpus == cpus_all:
        cpus = []
    return SchedParam(priority, cpus)
Beispiel #2
0
 def get_priority(self, pid):
     return os.sched_getparam(pid).sched_priority
Beispiel #3
0
    # gc.collect(1)
    # gc.collect(2)
    # gc.disable()


if os.name != "nt":
    print("Making highest priority, os.SCHED_RR")
    try:
        pid = os.getpid()
        niceValue = os.nice(-20)
        sys.setswitchinterval(0.5)
        print("sys.getswitchinterval", sys.getswitchinterval())
        os.sched_setaffinity(pid, [(os.cpu_count() or 1) - 1])
        os.sched_setscheduler(pid, os.SCHED_RR, os.sched_param(1))
        print("sched_getscheduler", os.sched_getscheduler(pid))
        print("sched_getparam", os.sched_getparam(pid))
        print("sched_getaffinity", os.sched_getaffinity(pid))
        print("sched_getprioritymax", os.sched_get_priority_max(0))
        print("sched_getprioritymin", os.sched_get_priority_min(0))
        print("sched_rr_getinterval", os.sched_rr_get_interval(pid))
        print("nice", os.nice(0))
    except PermissionError:
        print("run as root to make top OS priority for more accurate results.")
else:
    print("lol windows good luck")

for i in range(5):
    print("pass", i + 1)

    for j in range(1_000_000):
        if sum(j for j in range(10)) < 0:
Beispiel #4
0
# -*- coding: utf-8 -*-
import os
import signal
import time

pid = 0

param = os.sched_getparam(pid)
print("Parametros do processo " + str(param))

#muda os parametros do escalonador para um determinado pid
#os valores de prioridade suportados dependem da política
#de escalonamento corrente
#os.sched_setparam(pid, param)

#incrementa o "nice" do processo, dando uma forma
#de boost/downgrade na prioridade do mesmo, valores suportados no ubuntu
#variam de -20 à 19, em alguns sistemas, esses limites são diferentes
#os.nice(10)

#muda a política de escalonamento para um determinado PID
#caso você não seja super usuário, a única política suportada
#são os.SCHED_OTHER(default), os.SCHED_IDLE e os.SCHED_BATCH
#as demais políticas suportadas: SCHED_FIFO (FCFS), SCHED_RR (Round Robin)
#e SCHED_SPORADIC tem que ser pré configuradas antes  de executar
#os.sched_setscheduler(pid, policy, param)

#muda a afinidade da cpu para um determinado processo
#para saber quais identificadores das CPUs você pode
#visualizar o /proc/cpuinfo. Dessa forma você consegue
#restringir um processo a executar apenas em uma cpu ou em
def check_sched(pid):
    # try to retrieve scheduling infos
    os.sched_getparam(pid)
                    '-s',
                    default='--\nHELLO\nWORLD\n',
                    help='string to overwrite with')
parser.add_argument('--binary',
                    '-b',
                    default='/usr/bin/sum',
                    help='binary to use sudo with')
args = parser.parse_args()

init()
try:
    inotify_thread = Thread(target=f_inotify)
    inotify_thread.setDaemon(True)
    inotify_thread.start()

    os.sched_setscheduler(0, os.SCHED_IDLE, os.sched_getparam(0))

    print(os.sched_getaffinity(0))
    os.sched_setaffinity(0, os.sched_getaffinity(0))
    os.nice(19)

    time.sleep(2)
    print("starting")

    asd = subprocess.Popen(
        "/dev/shm/_tmp/\\ \\ \\ \\ \\ 34873\\  -r unconfined_r {} '{}'".format(
            args.binary, args.string),
        shell=True)
    asd_PID = asd.pid
    stdout, stderr = asd.communicate()
    #print(stdout)