기본 SLES11 SP2 커널을 사용할 때 I/O 관련 성능 문제를 발견했습니다. 동일한 하드웨어(물론 고대 SLES9 SP3)의 동일한 애플리케이션에는 문제가 없습니다.
우리는 이것이 커널과 관련이 있다고 생각하며 지금까지 다음 실험을 수행했습니다.
- kernel.org
3.0.13
소스 트리를 다운로드하고 압축을 풉니다. - Novell
kernel-source-3.0.13-0.27.1
소프트웨어 패키지가 설치되었습니다. 이는3.0.13
모든 Novell 패치/조정이 적용된 소스입니다. - 기본 구성 파일은 트리 에
3.0.13
생성되며 , 이 파일은 하드웨어에 필요한 드라이버 컨트롤러 및 네트워크 카드 드라이버를 열고 커널을 빌드하는 데make x86_64_defconfig
사용됩니다 .make menuconfig
이 커널에는no
성능 문제 가 있습니다. - 트리 에서
3.0.13-0.27.1
우리는 Novell이 컴파일된 커널과 함께 제공하고 이를 사용하여 빌드한 구성 파일을 얻었으며 Novell 컴파일된 커널과 동일한 성능 문제에 직면했습니다. - 트리 에서
3.0.13-0.27.1
(3)에 사용된 구성 파일을 가져와서 이를 사용하여 빌드합니다(구성기의 Novell 버전이 추가하려는 추가 구성 기본값을 수락합니다). 가지다아니요성능 문제. 3.0.13
트리 에서 (4)에 사용된 구성 파일을 가져와서 빌드합니다(누락된 파일의 Novell 구성 옵션만 누락됨). 가지다아니요성능 문제.- 트리 에서
3.0.13-0.27.1
(4)에 사용된 프로필을 가져오고 장치 드라이버(다른 것은 없음)가 (3)의 프로필과 일치하도록 만듭니다(즉, 아직 사용되지 않은 많은 수의 장치 드라이버를 끄십시오). 가지다아니요성능 문제.
따라서 kernel.org 3.0.13
트리에는 성능 문제가 없습니다. 3.0.13-0.27.1
Novell의 트리 문제는 Novell의 구성 파일이나 Novell의 구성 파일과 동일하지만 대부분의 장치 드라이버가 구성 해제된 파일을 사용하여 빌드하는 경우에만 발생합니다.
이를 고려하면 문제를 일으키는 일부 Novell 전용 구성 옵션(및 암시적으로 활성화되는 Novell 코드)이 있거나 Novell 패치와 일부 표준 옵션 사이에 잘못된 상호 작용이 있는 것 같습니다(가능한 한 가깝다고 가정). -to -Novell's-config가 수행합니다.아니요원본 kernel.org 소스 코드에 대해 빌드할 때 문제가 발생합니다.
조사를 계속하는 동안 저는 커널 해커가 아니기 때문에(커널을 구축하는 방법을 알고 있지만 그게 전부입니다) 가장 주목할만한 구성 옵션 "계열"이 무엇인지 알고 싶습니다. 아이디어는 "Novell" 설정에서 "kernel.org" 설정으로 일부 옵션을 변경하고 문제가 사라지는지 확인한 다음 다시 설정하고 다른 설정을 시도하는 것입니다.
하지만 범위를 좁히고 싶기 때문에 어떤 구성 옵션을 먼저 사용하는 것이 좋은지 문제가 됩니다.
답변1
우리는 문제를 해결했습니다! "좋은" 커널과 "나쁜" 커널 사이의 구성 옵션 차이에 대한 준이진 검색을 수행한 결과, SLES11이 ext3
기본적으로 쓰기 장벽을 켜서 문제가 발생했다는 사실을 발견했습니다. 기본적으로 꺼진 쓰기 장벽으로 구축된 커널은 그렇게 합니다.아니요문제가 있습니다. 문제가 있는 커널을 사용하다가 barrier=0
마운트 옵션을 에 넣으면 /etc/fstab
문제가 사라졌습니다.