저는 대학 시절부터 사용했던 오래된 노트북의 속도를 높여줄 무언가를 찾고 있습니다. 전반적인 성능을 약간 향상시키기 위해 커널을 다시 컴파일할 수 있다고 들었습니다. 하지만 그 노트북에는 여전히 인텔 컴파일러에 대한 (지금은 다소 오래된 것 같습니다) 학생 라이센스가 있었습니다.
이유는 잘 모르겠지만 Intel 컴파일러는 실행 파일을 GNU 버전보다 훨씬 빠르게 만듭니다(Intel CPU에서 비밀 확장을 사용하는 것일 수도 있습니다). 이 독점 컴파일러로 커널을 컴파일하면 속도 성능이 더욱 눈에 띄게 향상될지 궁금합니다.
또한 전반적인 성능 향상을 위해 시스템의 다른 주요 부분을 직접 컴파일할 수 있습니까?
답변1
나는 Linux 커널 개발자를 대변할 수 없지만(그리고 이것이 당신이 말하는 Linux 커널이라는 징후는 없지만 아마도 그럴 것이라고 가정하고 있습니다) OpenBSD(나에게 더 친숙한)에서는 심지어 새 버전으로 이동같은 컴파일러의이것은 "그냥 그렇게" 하고 싶은 것이 아닙니다.
커널은 복잡한 소프트웨어이므로 커널이 올바르게 실행되는지 확인하려면 특정 도구 체인을 사용하여 커널을 개발하고 테스트하는 것이 중요합니다.
새 버전의 컴파일러에는 컴파일된 코드에 미묘한 차이가 발생할 수 있는 변경 사항이 있습니다(또는 새 버전이 아닙니다). 개발자는 도입된 차이점으로 인해 시스템의 가장 핵심적인 소프트웨어 부분(커널)이 오작동하지 않도록 해야 합니다.
게다가 커널 소스 코드는 표준을 준수하는 C 코드가 아니며 Linux 커널은 GCC 툴체인에만 존재하는 확장을 사용합니다(또는 적어도 사용하는 데 사용됨). 나읽다clang
이 컴파일러(현재 많은 OpenBSD 시스템의 기본 컴파일러)로 컴파일하려고 할 때 최소한 초기 문제가 있었습니다. 여기로 이사하는 것은 icc
더 큰 진전이 될 수 있습니다.
OpenBSD에서는 사용자도낙담한개발자가 지원하는 일반 커널에서 구성 요소를 추가하거나 제거하면 디버깅 실패가 더 어려워지므로 기본 개별 컴파일러 플래그 변경을 포함하는 사용자 정의 커널을 컴파일하십시오.
한마디로 추천드리고 싶습니다아니요을 사용해 보세요 icc
.
특정 응용 프로그램이 느리게 실행되는 경우 해당 응용 프로그램을 다시 컴파일하여 icc
속도가 빨라지는지 확인할 수 있습니다. 오픈 소스 코드 컴파일에 대한 내 경험에 따르면 icc
일부 응용 프로그램은 오픈 소스 컴파일러 툴체인을 위해 특별히 작성된 것처럼 보이며(개발자가 사용하는 것이기 때문에) 인텔 컴파일러로 깔끔하게 컴파일되지 않습니다.
다른 제안으로는 하드 드라이브를 더 빠른 드라이브로 업그레이드하거나 시스템에 RAM을 추가하는 것이 있습니다.이러한 개선을 통해 "더 나은" 컴파일러로 다시 컴파일하는 것보다 전반적인 성능이 더 향상될 수 있습니다., 특히 I/O 바인딩된 응용 프로그램을 사용하는 경우(업그레이드된 하드 드라이브의 이점을 누릴 수 있음)