atd,batch //로드 제한 요소 설정

atd,batch //로드 제한 요소 설정

저는 비대화형 작업 실행을 사용하고 batch있으며 8개의 코어를 모두 사용하도록 로드 제한 요소를 늘리고 싶습니다. 저는 우분투 16.04 LTS를 사용하고 있습니다.

내가 이해한 바로는 작업을 완료하는 batch데 사용됩니다 . atd로드 비율이 임계값이라고 하는 임계값 아래로 떨어지면 작업이 시작됩니다.부하 제한 계수. options 을 man사용하여 atd이 요소를 변경할 수 있다고 합니다 -l.

내 질문: 이 옵션을 어떻게 사용합니까 atd -l XX? 예를 들어 atd -l 7.2before 를 입력하면 batch아무 것도 변경되지 않는 것 같습니다.

지금까지 내가 찾은 것 :

  • 이 질문에는멀티스레딩을 통해 bash 스크립트를 실행하는 방법, 한 기여자는 "서비스 시작 스크립트"에서 이 작업을 수행할 것을 제안했습니다 atd. 나는 그것이 그것을 언급하는 것 같지만 /etc/init.d/atd무엇을 변경해야할지 모르겠습니다. 다음 요점을 참조하십시오.
  • 이와 같은 페이지를 찾았습니다.http://searchitchannel.techtarget.com/feature/Understanding-run-level-scripts-in-Fedora-11-and-RHEL, 그들은 다음과 같이 제안합니다. "스크립트의 다음 줄(시작 부분) 수정 /etc/init.d/atd: 매개변수를 사용하여 새로운 최소 시스템 로드 값을 지정하여 daemon /usr/sbin/atd이 줄로 바꿉니다 . ". 그러나 에는 그러한 줄이 없습니다 .-ldaemon /usr/sbin/atd -l 1.6/etc/init.d/atd

여기서 소개하면 될 것 같은데 /etc/init.d/atd, 어딘지 모르겠어요. 나는 그런 파일을 변경한 적이 없습니다.

batch그렇다면 명령에 사용되는 부하 제한 요소를 어떻게 변경합니까 ?

답변1

해결책을 찾았습니다.

  • 파일을 생성합니다:/etc/init/atd.override
  • 행 추가exec atd -l 7.2
  • 그 다음에sudo service atd restart

이는 "Upstart init 데몬"의 작동 방식과 관련이 있습니다. 거기에 대한 설명:http://linux.die.net/man/5/init 파일이 /etc/init/atd.override이미 존재하고 로 시작하는 줄이 포함되어 있으면 exec해당 줄을 편집합니다.

답변2

/lib/systemd/system/atd.serviceUbuntu 16.04/systemd에서 편집되었습니다.

-l «load avg»다음에 추가 ExecStart:

$ cat /lib/systemd/system/atd.service 
[Unit]
Description=Deferred execution scheduler
Documentation=man:atd(8)

[Service]
ExecStart=/usr/sbin/atd -f -l 7.2
IgnoreSIGPIPE=false

[Install]
WantedBy=multi-user.targe

실행하면 메시지 systemctl status atd또는 ( service atd status)가 표시됩니다.

경고: 디스크의 atd.service가 변경되었습니다. 장치를 다시 로드하려면 "systemctl daemon-reload"를 실행하세요.

이 명령을 실행하면 경고가 표시되지 않지만 실제로 변경 사항을 적용하려면 systemctl restart atd( service atd restart).

답변3

이는 다음을 기반으로 합니다.웨슬리 B의 답변. 사용하는 경우 적용됩니다 systemctl. 서비스 구성을 직접 업데이트하는 대신,씌우다정의될 수 있습니다. 운영 체제는 언제든지 서비스 구성을 대체할 수 있으므로 이렇게 하는 것이 가장 좋습니다. 이 답변은 Ubuntu 21.10에서 테스트되었습니다.

  1. 실행 sudo systemctl edit atd하고 삽입하세요:
[Service]
ExecStart=
ExecStart=/usr/sbin/atd -f -l 3.0 -b 5

ExecStart=위에서 이전 값을 무효화하려면 값이 없는 행이 필요합니다. 다음 줄에서는 필요 에 따라 -lsum 값을 설정합니다.-b남성페이지.

그러면 위의 줄이 작성됩니다 . /etc/systemd/system/atd.service.d/override.conf이 파일을 추가할 때 추가되지 않은 경우 이를 실행해야 systemctl edit할 수도 있습니다 .sudo systemctl daemon-reload

  1. 달리기 sudo systemctl restart atd.

  2. 확인 상태:

systemctl status atd
ps aux | grep [a]td

여기에는 맞춤 매개변수와 함께 서비스 및 프로세스 상태가 표시되어야 합니다.

답변4

내 근처에는 Ubuntu 16.04 LTS가 없지만 Debian 기반 시스템에서는 /etc/init.d/atd일반적으로 다음과 같이 표시됩니다.

case "$1" in
  start)
        log_daemon_msg "Starting deferred execution scheduler" "atd"
        start_daemon -p $PIDFILE $DAEMON -l 7
        log_end_msg $?

-l 7섹션을 추가한 위치를 확인하세요 . 그런 다음 재부팅 /etc/init.d/atd restart하고 ps auxwww|grep atd승인되었는지 확인 해야 합니다 .

때로는 /etc/default/atd더 쉬운 접근 방식을 선택한다는 점에 유의하십시오(그리고 다음 업그레이드 시 변경 사항이 자동으로 지워지지 않기 때문에 더 좋습니다).

관련 정보