Arch Linux 및 Ubuntu(16.04)로 이중 부팅된 머신이 있습니다.
최근에 사용하기 시작했어요카쿤 텍스트 편집기, 그리고 내가 사용하고 있는 OS에 따라 부팅 시간이 크게 다르다는 것을 알았습니다. 하지만 제가 생각하는 근본적인 문제는아니요Kakoune에 직접 귀속됩니다.
시작 시 kakoune은 여러 셸 스크립트를 실행하여 x11 및 tmux, git, 구문 강조/색 구성표 등과의 통합을 활성화합니다. 이 기능은 플래그를 사용하여 "바닐라" 편집기만 로드되도록 비활성화할 수 있습니다 -n
.
명령: kak -e q
kakoune을 시작하고 모든 시작 스크립트를 실행한 후 즉시 종료합니다.
아치 위:
time kak -e q
필수1 초
time kak -n -e q
(쉘 스크립트 없음) 아래 완료20밀리미터.
우분투:
time kak -e q
약 소요됩니다.450밀리미터
time kak -n -e q
다시20밀리미터
지방을 다듬고 일부 시작 스크립트를 제거한 후 제거된 양에 비례하여 두 운영 체제 모두에서 개선이 나타났습니다.
몇 가지 벤치마크를 실행해 보았습니다.유닉스벤치두 시스템 간의 주요 차이점은 "프로세스 생성" 및 "셸 스크립트" 테스트에서 발견되었습니다.
셸 스크립트 테스트는 프로세스가 데이터 파일에 일련의 변환을 적용하는 셸 스크립트 세트(1개, 2개, 4개, 8개의 동시 복사본)를 시작하고 얻을 수 있는 분당 횟수를 측정합니다.
관련 출력은 다음과 같습니다. "초당 주기" 단위가 많을수록 좋습니다.
Process creation (1 parallel copy of tests)
Arch: 3,822
Ubuntu: 5,297
Process creation (4 parallel copies of tests)
Arch: 18,935
Ubuntu: 30,341
Shell Scripts (1 concurrent) (1 parallel copy of tests)
Arch: 972
Ubuntu: 5,141
Shell Scripts (1 concurrent) (4 parallel copies of tests)
Arch: 7,697
Ubuntu: 24,942
Shell Scripts (8 concurrent) (1 parallel copy of tests)
Arch: 807
Ubuntu: 2,257
Shell Scripts (8 concurrent) (4 parallel copies of tests)
Arch: 1,289
Ubuntu: 3,001
우분투 시스템의 성능이 훨씬 좋아진 것을 볼 수 있습니다.
다양한 로그인 셸, 터미널 에뮬레이터, kakoune 재컴파일, 디스크 정리를 위한 불필요한 소프트웨어 제거 등을 사용하여 테스트했습니다. 나는 이것이 병목 현상이라고 확신합니다.
내 질문은 다음과 같습니다이 문제를 더 자세히 조사하고 Ubuntu와 일치하도록 Arch Linux 시스템의 성능을 향상하려면 어떻게 해야 합니까? 커널 튜닝을 고려해야 합니까?
추가 참고 사항:
- 두 시스템 모두 동일한 유형의 파일 시스템(ext4)을 사용합니다.
- 나는 Archlinux 시스템을 사용하는 것을 선호하며 시간이 지남에 따라 성능 저하를 발견했습니다.
- Arch는 /dev/sda1에 위치하며 크기는 약 200GB입니다. 우분투는 /dev/sda2, ~500GB에 있습니다. 1TB 하드 드라이브.
- 아치
uname -a
:Linux ark 4.14.13-1-ARCH #1 SMP PREEMPT Wed Jan 10 11:14:50 UTC 2018 x86_64 GNU/Linux
- 우분투
uname -a
:Linux sierra 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
감사해요
답변1
Debian과 Ubuntu는 dash를 /bin/sh
Bash보다 약간 빠른 as로 사용합니다.
$ time for x in {1..1000} ; do /bin/bash -c 'true' ; done
real 0m1.894s
$ time for x in {1..1000} ; do /bin/sh -c 'true' ; done
real 0m1.057s
이것은 그림과 거의 같은 영역입니다(축척 기준).
Debian과 Ubuntu에서 /bin/sh
Bash 대신 dash로 변경된 것은 주로 성능 때문이었습니다.
기본 쉘을 전환하는 주된 이유는 효율성입니다. bash는 모든 기능을 갖춘 뛰어난 셸입니다. 하지만 dash에 비해 크기가 상당히 크고 시작 및 실행 속도가 느립니다.
답변2
ilkkachu가 설명했듯이 Arch는 bash를 사용하는 /bin/sh
반면 Ubuntu는 기본적으로 dash를 사용합니다.
이를 더 자세히 조사하고 이것이 차이점을 설명하는지 확인하려면 bash를 사용하도록 Ubuntu 시스템을 구성하고 벤치마크가 Arch에서 얻은 결과와 유사한 결과를 보고하는지 확인할 수 있습니다. 이렇게 하려면 다음을 실행하세요.
sudo dpkg-reconfigure dash
그리고 "아니요"를 선택하세요. 그런 다음 /bin/sh
포인팅을 확인 bash
하고 테스트를 실행할 수 있습니다.
기본값을 복원하려면 동일한 명령을 다시 실행하고 예를 선택합니다.
이것이 성능 차이의 원인이라면 Arch를 Ubuntu에 맞게 개선하는 것은 어려울 것입니다. 대시를 설치하고 사용할 수 있지만 bash를 가정하고 대시로 실패하는 많은 스크립트를 접할 가능성이 높습니다 /bin/sh
. 데비안과 우분투는 모든 문제를 식별하고 수정하는 데 꽤 오랜 시간이 걸렸습니다.
답변3
다른 사람이 같은 문제를 겪을 경우를 대비해 내 답변을 추가합니다.
for
@ilkkachu의 답변에서 루프를 실행할 때대화형 bash 쉘zsh 또는 Fish를 다음과 같이 사용하십시오.내 로그인 쉘, /bin/bash
루프에는 약 13초가 소요됩니다. 루트 로그인 쉘에서 루프를 실행하거나 변경하는 경우내 로그인 쉘글쎄 /bin/bash
, @ilkkachu의 답변과 비슷한 결과를 얻었습니다.
/bin/bash
나는 이것이 로그인 쉘로부터 환경을 상속받기 /bin/zsh
때문 이라고 생각 /bin/fish
하지만 확실하지는 않습니다.
어쨌든 변경하여 문제를 해결했습니다.내 로그인 쉘/bin/bash
터미널을 실행 /bin/fish
하거나 /bin/zsh
대화형 쉘로 설정 합니다 .