numactl을 사용하여 서비스를 실행하는 방법

numactl을 사용하여 서비스를 실행하는 방법

MongoDB를 실행하려면 이와 같은 작업을 수행해야 합니다.

$numactl --interleave=all /usr/bin/mongod --config /etc/mongod.conf &

위의 옵션으로 mongo 데몬을 실행하려면 무엇을 변경해야 합니까?

답변1

서비스를 어떻게 관리하느냐에 따라 다릅니다.

daemontools 서비스 관리자 제품군을 사용하면 됩니다.

현재 run프로그램은 본질적으로 다음과 같이 요약됩니다.

#!/빈/노쉬
chdir/
setuidgid 몽고디비
몽골드

run이것은 실제로 일반 서비스 팩에 포함된 매우 기본적인 MongoDB 프로그램입니다.나의 스낵 스위트, 이는 쉘을 스크립트 해석기로 사용하지 않습니다. rundaemontools가 관리하는 서비스에 대한 쉘 해석 스크립트.contegix에서 사용하는 것또는카와즈 요시아키 중 한 명더 복잡해 보일 수도 있지만 결국에는 exec setuidgid mongodb mongod명령이 있습니다.어딘가에, 쉘 변수 확장 뒤에 숨겨져 있더라도 마찬가지입니다.

daemontools 서비스 관리자 제품군의 경우 run이러한 프로그램은 본질적으로 간단한 체인 로딩 명령 시퀀스입니다. 이 numactl프로그램은 자체 프로세스의 설정을 수정한 다음 명령줄에 지정된 프로그램에 연결하는 체인 로딩 명령이기도 합니다. 다음과 같은 daemontools 도구에 이상적입니다.setuidgid.

따라서 거기에 체인을 추가하면 numactl됩니다.

#!/빈/노쉬
chdir/
numactl --interleave=all--
setuidgid 몽고디비
몽골드
nosh 스크립트에서 또는
구현하다\
numactl --interleave=all--\
setuidgid mongodb \
몽골드
쉘 스크립트에서. (쉘 스크립트에서는 스크립트가 존재 여부를 자동으로 감지하도록 할 수 있습니다 numactl. 아래의 신생 사람들로부터 메커니즘을 훔치기만 하면 됩니다.)

그런 다음 서비스를 다시 시작하세요(nosh에만 해당).

시스템 제어 condrestart mongod.service
또는

svc -t /service/mongodb
이전 일반 daemontools 디렉토리를 사용하는 경우 /service.

systemd를 사용하면 그게 전부입니다.

유닛 파일 에는 mongod.service섹션이 있습니다

[제공하다]
사용자=몽고디비
ExecStart=/usr/local/bin/mongod $OPTIONS 실행

이것이 당신이 찾을 것입니다mongodb에 포함된 systemd 서비스 단위, 조금 더 복잡하지만 그다지 복잡하지는 않습니다.

ExecStart따라서 제안에 따라 설정을 수정하면 됩니다 .

ExecStart=/usr/bin/numactl --interleave=all -- /usr/local/bin/mongod $OPTIONS 실행

이를 대체 유닛 파일에 넣어 /etc/systemd/service/mongod.service패키지 제공 유닛 파일을 완전히 재정의하거나, 패키지 제공 유닛 파일을 유지하고 예를 들어 의 설정에 대해서만 재정의를 사용합니다 /etc/systemd/service/mongod.service.d/numactl.conf.

그런 다음 파일에서 서비스 단위를 다시 로드하면 됩니다.

systemctl 데몬 다시 로드
그리고 서비스를 다시 시작하세요

systemctl condrestart mongod.service

누보 부자에게는 남은 것이 없습니다.

답은 위치해있습니다https://askubuntu.com/questions/293468/AskUbuntu의 콘텐츠는 이제 거의 2년이 되었습니다. 동시에,numactl능력이 배치되었습니다입력하다패키지에서 제공하는 upstart 작업 파일.

따라서 시스템이 최신 상태라고 가정하면 이미 이 작업을 수행하고 있을 것입니다.

initctl mongodb 다시 시작

추가 읽기

관련 정보