원격 시스템의 멋진 rsync


25

rsync + ssh를 사용하여 원격 시스템에 액세스 할 때 원격 시스템에서 rsync 프로세스를 "좋은"방법으로 우선 순위를 낮추는 방법이 있습니까?

명확히하기 위해 질문 편집하기 :

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(동기화 라인 스니핑)

이것은 일반적으로 오전 4시에 실행되는 백업 크론 작업이지만 깨어있을 때 (그리고 같은 컴퓨터에서 호스팅되는 Bugzilla를 사용하거나 커밋 할 때) 서버 성능이 저하되므로 빠른 "해킹"을 시도하고 수정하려고했습니다. 조금.

답변:


35

--rsync-path옵션을 사용할 수 있습니다 ( 예 :

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
예를 들어 , 현대 리눅스는 멋진 프로세스의 IO 우선 순위를 자동으로 줄이지 만 ionice 사용을 고려할 수도 있습니다 --rsync-path="ionice -c 3 nice rsync"(연결된 매뉴얼 페이지 참조).
Jo Liss

나는 이미 시도했지만 내 SSHD는 여전히에서 실행nice 0
펠리페 알바레즈

이없는 시스템과 같은 FreeBSD ionice에서는 --bwlimit옵션을 설정하는 것이 더 나은 rsync에 좋습니다.
deed02392

1
또한이 옵션에 아무런 문제가 없었습니다. 내가 연결하고 있던 서버가 특정 rsync 명령 만 허용하도록 authorized_keys에 구성되어있는 것으로 나타났습니다.이 명령은 --rsync-path내가 지정한 옵션 을 재정의했습니다 .
Andy Beverley

7
  • 당신이 가진 --rsync-path옵션 을 복용rsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • 복용 구성 파일 옵션은 파일에 변경하거나 주석 값과 값을/etc/default/rsyncRSYNC_NICE='17'RSYNC_IONICE='-c3'

이오니아 값 모두 하드 디스크 우선 순위입니다.

  • 1-> 실시간
  • 2-> 최선의 노력
  • 3-> Ildle (다른 프로세스에서 HD를 사용하지 않는 경우)

Linux의 경우 cfq스케줄러 만 실제로 IO 클래스 및 우선 순위를 구현합니다. 원격 시스템 관리자가 IO 스케줄러로 선택한 경우 noop, deadline또는 좀 더 이국적인 변형는 것을 알 수 있습니다 ionice정말 아무것도하지 않는다. cfq를 올바르게 조정cfq 하여 IO 클래스 및 우선 순위를 사용하여 고성능을 얻을 수 있어야 합니다 .

프로세서 우선 순위에 대한 좋은 가치

  • -20 (가장 유리한 공정)
  • -n을 지정하지 않은 경우 (기본값 10)
  • 19 (프로세스에 유리하지 않음)

누가 책임이 /etc/default/rsync있습니까? rsync 자체 가이 파일을 읽고 있습니까, 아니면 linux-flavor / distribution에 의해 수행됩니까?
guettli

... 솔루션 /etc/default/rsync이 rsync 데몬 모드의 기본 파일이라는 것을 알았습니다 . rsync-protocol을 통해 rsync 데몬에 연결 한 경우에만 적용됩니다. ssh를 통해 호출하면 적용되지 않는 것 같습니다.
guettli

2

빠르고 더러운 해결책은 'rsync'라는 작은 래퍼 스크립트를 작성하여 실제 rsync 이진 앞에 $ PATH를 숨기는 것입니다.

#!/bin/sh
nice -10 /path/to/proper/rsync $*

또는 rsync의 nicing을 수행하도록 authorized_keys 파일을 설정하십시오. (ssh 키를 사용한다고 가정).

예:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

이제 /home/user/bin/nice-rsync.sh에서

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH


2

-z인수를 포함하지 않으면 네트워크에서 압축을 비활성화하여 어느 쪽의 CPU 시간도 절약 할 수 있습니다. 또는 rsync가 체크섬을 사용하는 방식을 변경하십시오.--checksum


나는 Hasturkun의 대답을 받아 들였지만 (내 질문에 대답했기 때문에) 당신은 좋은 점을 제시했습니다. 나는 압축 대 압축이없는 벤치 마크로 작업에 2 분만 추가했습니다. 방금 -avz를 내 플래그로 사용하는 데 익숙해 져서 -z를 떨어 뜨릴 생각조차하지 않았습니다.
mwalling

내 습관은 -aPh를 사용하는 것입니다. -z를 거의 사용하지 않습니다
Rory

0

Rsync는 많은 CPU를 사용하지 않아야합니다. 나는 당신이 다른 쪽 끝에서 특정 멋을 강요 할 수는 없지만, rsync가 방화벽과 함께 사용하는 대역폭을 제한하여 궁극적으로 X 시간 동안 처리 할 수있는 양을 줄이는 것입니다.


'ps aux'의 일부 출력을 추가하여 CPU까지 수행중인 작업을 보여줍니다. 나는 --compress 옵션이 설정 그래서 나는, 느린 링크를 통해 갈거야,하지만 또한 내가 좋은 (의도하지 않은 부작용)를 사용하여 허물고 기대했다 디스크 액세스의 좋은 금액을 일으키는
mwalling

좋은 값을 설정하면 일반적으로 누군가가 원하는 I / O niceness에도 영향을줍니다.
Bram Schoenmakers

rsyncCPU가 많이 필요하지는 않지만 top현재 커널이 I / O 대기를 바쁜 것으로 간주하는지에 따라 표시 될 수 있습니다 . 또한 다른 프로세스가 스토리지에 액세스해야 rsync하고 최대 속도로 실행되도록 허용 된 경우 다른 모든 프로세스의 속도가 느려집니다.
Mikko Rantalainen

-7

나는 그렇게 생각하지 않습니다, 당신은 그것에 대한 사용자 정의 솔루션이 필요합니다 .. 사용 ftp


6
알다시피, 그것은 좋은 생각입니다. 원격 시스템에서 실행되는 데몬 (및 ssh의 고유 암호화), 압축 전송, 다운로드 재개, 차이점 만 전송하는 것 등 ssh를 실행할 수있는 것과 같은 rsync의 모든 기능이 필요한 사람 ... 고창증. 지금 당장 집으로 달려 가서 PS / 2 System 60을 사용하여 애니메이션을 FTP로 보내겠습니다!
mwalling

질문에 답변하지 못하고 질문의 예보다 훨씬 더 나쁜 대안을 제시하므로이 답변을 삭제하십시오.
user1133275
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.