주어진 프로세스에 대한 리소스 사용량을 제한하는 방법은 무엇입니까?


11

응용 프로그램을 실행해야하지만 프로세스에 너무 많은 IO 사용을 사용하는 프로세스가 있습니다. 그리고 실제로 내 컴퓨터가 충돌하여 실행 중일 때는 다른 작업을 수행 할 수 없습니다.

그래서 주어진 프로세스에서 IO 사용, RAM 및 CPU를 제한하는 방법이 있는지 궁금합니다. 그리고 그 하위 프로세스는 물론입니다.

이것은 내 우분투 18.04 LTS 시스템에 있습니다.


2
@GreatUncleBulgaria 평판 포인트를 나누고 싶지 않다면 실제로는 아닙니다. - 당신이 무엇을 물어에 대한 간단한 대답은 다른 사람이 무엇을 제안 결합하는 것입니다 ionice, renice- 그리고 아마도 ulimit -s명령을하고 그게 다에요.
Sergiy Kolodyazhnyy 2016 년

@GreatUncleBulgaria 익숙하지 않아서 전혀 몰라요 cgroups-io:)
Sergiy Kolodyazhnyy

잠재적으로 관련된 질문 : askubuntu.com/q/538992/295286 여기에 대한 답변은 cgroup에 관한 것이지만 그 밖의 다른 것은 아닙니다. . . 아마도 ?
Sergiy Kolodyazhnyy 2016 년

1
@ SergiyKolodyazhnyy : 누군가가 의견을 정리 한 것처럼 보입니다!

답변:


8

당신은 모두의 조합을 사용한다 cgexec, cpulimit그리고 ionice:

  1. RAM 및 스왑 제한 :

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes

    위의 명령은 szMyGroup(예를 들어 귀하의 경우 group-great-uncle) 라는 제어 그룹을 작성하고 szMyGroup최대 512MB의 실제 메모리와 최대 1024MB의 스왑에서 실행되는 프로세스에 제한을 설정 한 후 다음을 수행하십시오.

    sudo cgexec -g memory:szMyGroup szMyProgram

    szMyGroup제어 그룹에서 프로그램을 실행하여 한계를 준수하는지 확인합니다.

  2. 디스크 IO를 제한하십시오.

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)

    위 명령은 현재 명령 줄의 일부pgrep재사용 하여 다른 프로그램 에서 디스크를 사용 하지 않을 때만 디스크를 사용하도록 디스크 액세스를 제한 합니다.

  3. CPU를 제한하십시오.

    sudo cpulimit --limit=25 --pid=!#:4

    프로그램의 CPU는 이제 최대 25 %로 제한됩니다

프로그램이 많은 CPU를 사용하여 시작하지 않으면 cpulimit 값을 현재 사용중인 값의 절반 이하로 낮추십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.