2018.09.03

"코드 10만 줄 삭제" 리눅스 커널 4.18, 더 빠르고 안전해졌다

Sandra Henry-Stocker | Network World
최근 발표된 리눅스 커널 4.18과 이후 나온 4.18.1, 4.18.2, 4.18.3, 4.18.4, 4.18.5는 리눅스 생태계에 큰 변화를 몰고 왔다. 많은 기능 개선과 조정, 버그 수정이 이뤄진 것도 특징이다. 원했던 기능 개선을 확인한 개발자는 깊은 인상을 받았겠지만 최근 변화를 무심코 넘긴 리눅스 사용자도 꽤 많을 것이다. 여기서 새 커널의 주요 특징을 살펴보자.



코드 정리
무엇보다 4.18 커널에서는 ‘시대에 뒤떨어진’ 코드 약 10만 줄이 사라졌다. 상당한 규모다. 그렇다면 이로 인해 그동안 많은 사람이 좋아하던 기능이 사라졌을까? 아니다. 그럴 확률은 아주 낮다. 큰 ‘덩어리’ 하나와 쓸모 없는 코드가 커널에서 정리되면서 오히려 코드가 깨끗해졌다. 새 커널에 필요한 메모리가 줄어들었고, 더 효율적으로 실행된다. 또 구식 코드를 표적으로 삼는 공격에도 더 효과적으로 대응할 수 있게 된다. 코드가 더 깔끔해졌고 관리도 쉬워졌다.

러스터 제거
앞서 언급했던 ‘큰 코드 덩어리’는 완전히 통합되지 않은 상태에서 커널에 존재했던 러스터(Lustre) 파일 시스템을 가리킨다. 이번 버전에서 이 러스터 파일 시스템이 제거됐다. 이 파일 시스템이 제거된 이유는 커널에 계속 유지할 정도로 빠르게 발전하고 있지 않기 때문이다. 러스터는 클러스터 컴퓨팅에 사용되는 분산형 파일 시스템이다. '러스터'라는 용어 자체가 리눅스(Linux)와 클러스터(Cluster)의 조합이다. 그러나 아직은 불완전하고 미성숙한 상태다. 앞으로 꾸준히 개선돼 커널 트리에 연결할 준비가 되면, 다음 릴리스에 재도입될 가능성도 있다.

BPF 도입
또 다른 흥미로운 기능은 BPF(Berkeley Packet Filter)다. tcpdump 등 다른 도구의 패킷 필터링 기능에서 출발한 것으로 리눅스 4.18에 처음 도입됐다. 앞으로 iptables와 nftables를 대체할 예정이다. 또 성능에 영향을 주지 않으면서, 네트워크 보안, 로드 밸런싱, 성능 모니터링 등 리눅스의 몇몇 기능을 확장한다. BPF는 네트워킹과 보안 측면에서 아주 큰 변화이다. BPF는 iptables 규칙을 고유의 규칙 형식으로 쉽게 변환하는 방법을 제공한다. 필터링 규칙에도 유연성을 제공한다(어쩌면 네트워크 인터페이스 그 자체에서도). 그리고 네트워크 스택을 현대화하고, 여기에 다시 활력을 불어넣을 것으로 기대된다.

스펙 파일 시스템 암호화
4.18에서 블록 장치 수준이 아닌 파일 시스템 수준에서 작동할 FSCRYPT는 스펙128/스펙256(Speck128/Speck256) 암호화 알고리즘을 지원한다. 이에 따라 스펙을 파일 시스템 암호화 방식으로 선택할 수 있게 됐다. 그러나 ‘논란’도 있다. 스펙은 NSA(National Security Agency)가 개발했는데, 디자인 구성 요소 중 일부를 공유하지 않을 가능성이 있다. 이 때문에 일부에서는 사용하지 않겠지만, 로우 엔드 안드로이드 장치에서는 유일한 암호화 방법이다. 결국 중요한 역할을 할 수도 있다는 의미이다.

향상된 그래픽
4.18 커널은 향상된 오픈소스 그래픽 드라이버를 제공한다. AMDGPU(최신 AMD 라데온 그래픽 카드용 오픈 소스 그래픽 드라이버)에는 향후 나올 베가 20 GPU 그래픽 카드용 코드가 포함돼 있으며, 인텔 카비레이크(Kabylake) G 프로세서에서 사용할 수 있는 라데온 그래픽인 베가 M 하드웨어를 지원한다. 또 베가M과 엔비디아 볼타 GV100 하드웨어에 대한 하이퍼-V 지원 기능도 개선됐다. 이런 변화 덕분에 빠른 그래픽 성능을 지원할 것으로 기대된다.

사운드 칩 개선
4.18에서는 사운드 칩 관련 기능과 지원도 크게 향상됐다. 예를 들어 일부 크리에이티브 랩스(Creative Labs) CA0132 장치, HP 스펙터(Spectre) x360 노트북 컴퓨터 오디오, 리얼테크(Realtek) 칩과 미디어테크(MediaTek) 컨트롤러에 대한 지원이 강화됐다.

스팀 컨트롤러 드라이버
게임을 즐기는 사용자에게 희소식이다. 스팀(Steam) 컨트롤러 드라이버를 리버스 엔지니어링해 기기를 일반 HID(Human Interface 또는 Input Device)로 작동하도록 한 것이다. 이에 따라 스팀 클라이언트나 컨트롤러 드라이버를 별도로 설치할 필요가 없어졌다. 또한, USB나 무선으로 연결된 게임 패드가 가상 마우스, 터치패드, 키패드로 작동하며, 스팀 컨트롤러에 어떤 영향도 초래되지 않는다.

---------------------------------------------------------------
오픈소스 인기기사
->칼럼 | 오픈소스는 당신이 생각하는 그런 커뮤니티가 아니다
->핵심 오픈소스 SW 재단 8곳, 그리고 그들이 중요한 이유
->'이런 사람 꼭 있다' 오픈소스 프로젝트에서 만날법한 11가지 유형
->구글 고(Go)의 위력을 입증하는 오픈소스 프로젝트 10가지
->미약한 취미에서 창대한 협업 프로젝트로 '리눅스의 어제와 오늘'
->오픈소스의 두 얼굴··· 탁월한 가치, 만만치 않은 맹점
->무료 오픈소스 SW만으로 기업을 운영하는 방법
->'탐욕도 동력!'··· 돈 벌어주는 오픈소스의 비밀
->오픈소스 소프트웨어를 사용하지 않는 7가지 이유
---------------------------------------------------------------

성능 향상
새 커널에는 사용자 공간의 잠금 없는 동시 제어 메커니즘인 ‘재시작 시퀀스(RSEQ, Restartable Sequence)’가 포함됐다. RSEQ 시스템 호출은 사용자 공간 작업의 속도를 높인다. 일부 마이크로 벤치마크에서 성능 향상이 수치로 확인되기도 했다. 이는 또 커널 스케줄러 코드에 중요한 성능 향상을 가져온다. 이런 변화 덕분에 시스템 성능이 전반적으로 크게 향상될 것으로 기대된다.

리눅스 4.18이 제공하는 또 다른 성능 향상은 USB 3.2에서 듀얼 레인 전송을 지원하는 것이다. 덕분에 타입 C 케이블을 사용하는 호스트와 장치에서 USB 장치의 데이터 전송 속도가 빨라졌다. 리눅스 커널 4.18은 또한 비동기 IO에 새로운 커널 폴링 인터페이스를 제공한다. 파일 기술자 세트를 폴링, 차단 없이 I/O를 실행할 수 있는 대상을 결정한다. 이 또한 성능 향상을 가져온다. 이 새 커널은 ‘TCP zero-copy receive API’를 제공하고, 고성능 AF XDP 소켓을 지원한다. 즉 성능을 향상하면서 CPU 사이클과 메모리 대역폭은 절약한다.

2038년 Y2K 문제 해결
새 커널에는 오랫동안 알려져 있던 2038 문제를 해결하는 기능도 포함됐다. 많은 사람이 1999년 말을 앞두고 많은 사람을 걱정시킨 Y2K(밀레니엄) 버그를 기억할 것이다. 당시 사람들은 데이터 필드에 두 자리의 연도를 사용하는 시스템과 애플리케이션이 12월 31일 자정을 기준으로 시간을 1900년으로 인식하면서 충돌이 발생할까 우려했다. 유닉스는 고유한 날짜 저장 방식 때문에(Unix Epoch 이후 초의 수), 2028년 1월 19일에 이와 유사한 문제가 발생할 수 있다. 이에 따라 4.18 커널에서는 timespec의 구조를 개선해 해당 날짜에 3시 14분 7초가 됐을 때 32비트 시스템에서 이런 문제가 발생하지 않도록 수정됐다.

기타 4.18의 변화:

- 이제 권한이 없는 사용자도 사용자 공간에서 완전히 기능하는 파일 시스템을 구현할 수 있도록 도와주는 FUSE 파일 시스템을 탑재할 수 있다.
- 32비트 ARM 장치를 대상으로 ARM 스펙터(Spectre) 완화 픽스를 제공한다.
- 이제 많은 하이 엔드(고급 및 고가) 모바일 기기에서 사용하는 SoC(System on Chip)인 퀄컴 스냅드래곤 845(가장 빠른 모바일 프로세서)를 지원한다.
- 라스베리 파이(Raspberry Pi) 3B 및 3B+를 완전히 지원한다.
- 서버와 PC 모두 성능에 도움을 주는 전원 관리 업데이트가 포함됐다.
- 델(Dell) 하드웨어에서 썬더볼트(Thunderbolt)를 기본 지원한다.

이처럼 4.18 리눅스 커널에는 성능, 보안, 기능성에 있어 환영할 만한 변화가 다수 추가됐다. 특히 ‘2038 문제’에 관해 더는 걱정하지 않아도 된다. ciokr@idg.co.kr

2018.09.03

"코드 10만 줄 삭제" 리눅스 커널 4.18, 더 빠르고 안전해졌다

Sandra Henry-Stocker | Network World
최근 발표된 리눅스 커널 4.18과 이후 나온 4.18.1, 4.18.2, 4.18.3, 4.18.4, 4.18.5는 리눅스 생태계에 큰 변화를 몰고 왔다. 많은 기능 개선과 조정, 버그 수정이 이뤄진 것도 특징이다. 원했던 기능 개선을 확인한 개발자는 깊은 인상을 받았겠지만 최근 변화를 무심코 넘긴 리눅스 사용자도 꽤 많을 것이다. 여기서 새 커널의 주요 특징을 살펴보자.



코드 정리
무엇보다 4.18 커널에서는 ‘시대에 뒤떨어진’ 코드 약 10만 줄이 사라졌다. 상당한 규모다. 그렇다면 이로 인해 그동안 많은 사람이 좋아하던 기능이 사라졌을까? 아니다. 그럴 확률은 아주 낮다. 큰 ‘덩어리’ 하나와 쓸모 없는 코드가 커널에서 정리되면서 오히려 코드가 깨끗해졌다. 새 커널에 필요한 메모리가 줄어들었고, 더 효율적으로 실행된다. 또 구식 코드를 표적으로 삼는 공격에도 더 효과적으로 대응할 수 있게 된다. 코드가 더 깔끔해졌고 관리도 쉬워졌다.

러스터 제거
앞서 언급했던 ‘큰 코드 덩어리’는 완전히 통합되지 않은 상태에서 커널에 존재했던 러스터(Lustre) 파일 시스템을 가리킨다. 이번 버전에서 이 러스터 파일 시스템이 제거됐다. 이 파일 시스템이 제거된 이유는 커널에 계속 유지할 정도로 빠르게 발전하고 있지 않기 때문이다. 러스터는 클러스터 컴퓨팅에 사용되는 분산형 파일 시스템이다. '러스터'라는 용어 자체가 리눅스(Linux)와 클러스터(Cluster)의 조합이다. 그러나 아직은 불완전하고 미성숙한 상태다. 앞으로 꾸준히 개선돼 커널 트리에 연결할 준비가 되면, 다음 릴리스에 재도입될 가능성도 있다.

BPF 도입
또 다른 흥미로운 기능은 BPF(Berkeley Packet Filter)다. tcpdump 등 다른 도구의 패킷 필터링 기능에서 출발한 것으로 리눅스 4.18에 처음 도입됐다. 앞으로 iptables와 nftables를 대체할 예정이다. 또 성능에 영향을 주지 않으면서, 네트워크 보안, 로드 밸런싱, 성능 모니터링 등 리눅스의 몇몇 기능을 확장한다. BPF는 네트워킹과 보안 측면에서 아주 큰 변화이다. BPF는 iptables 규칙을 고유의 규칙 형식으로 쉽게 변환하는 방법을 제공한다. 필터링 규칙에도 유연성을 제공한다(어쩌면 네트워크 인터페이스 그 자체에서도). 그리고 네트워크 스택을 현대화하고, 여기에 다시 활력을 불어넣을 것으로 기대된다.

스펙 파일 시스템 암호화
4.18에서 블록 장치 수준이 아닌 파일 시스템 수준에서 작동할 FSCRYPT는 스펙128/스펙256(Speck128/Speck256) 암호화 알고리즘을 지원한다. 이에 따라 스펙을 파일 시스템 암호화 방식으로 선택할 수 있게 됐다. 그러나 ‘논란’도 있다. 스펙은 NSA(National Security Agency)가 개발했는데, 디자인 구성 요소 중 일부를 공유하지 않을 가능성이 있다. 이 때문에 일부에서는 사용하지 않겠지만, 로우 엔드 안드로이드 장치에서는 유일한 암호화 방법이다. 결국 중요한 역할을 할 수도 있다는 의미이다.

향상된 그래픽
4.18 커널은 향상된 오픈소스 그래픽 드라이버를 제공한다. AMDGPU(최신 AMD 라데온 그래픽 카드용 오픈 소스 그래픽 드라이버)에는 향후 나올 베가 20 GPU 그래픽 카드용 코드가 포함돼 있으며, 인텔 카비레이크(Kabylake) G 프로세서에서 사용할 수 있는 라데온 그래픽인 베가 M 하드웨어를 지원한다. 또 베가M과 엔비디아 볼타 GV100 하드웨어에 대한 하이퍼-V 지원 기능도 개선됐다. 이런 변화 덕분에 빠른 그래픽 성능을 지원할 것으로 기대된다.

사운드 칩 개선
4.18에서는 사운드 칩 관련 기능과 지원도 크게 향상됐다. 예를 들어 일부 크리에이티브 랩스(Creative Labs) CA0132 장치, HP 스펙터(Spectre) x360 노트북 컴퓨터 오디오, 리얼테크(Realtek) 칩과 미디어테크(MediaTek) 컨트롤러에 대한 지원이 강화됐다.

스팀 컨트롤러 드라이버
게임을 즐기는 사용자에게 희소식이다. 스팀(Steam) 컨트롤러 드라이버를 리버스 엔지니어링해 기기를 일반 HID(Human Interface 또는 Input Device)로 작동하도록 한 것이다. 이에 따라 스팀 클라이언트나 컨트롤러 드라이버를 별도로 설치할 필요가 없어졌다. 또한, USB나 무선으로 연결된 게임 패드가 가상 마우스, 터치패드, 키패드로 작동하며, 스팀 컨트롤러에 어떤 영향도 초래되지 않는다.

---------------------------------------------------------------
오픈소스 인기기사
->칼럼 | 오픈소스는 당신이 생각하는 그런 커뮤니티가 아니다
->핵심 오픈소스 SW 재단 8곳, 그리고 그들이 중요한 이유
->'이런 사람 꼭 있다' 오픈소스 프로젝트에서 만날법한 11가지 유형
->구글 고(Go)의 위력을 입증하는 오픈소스 프로젝트 10가지
->미약한 취미에서 창대한 협업 프로젝트로 '리눅스의 어제와 오늘'
->오픈소스의 두 얼굴··· 탁월한 가치, 만만치 않은 맹점
->무료 오픈소스 SW만으로 기업을 운영하는 방법
->'탐욕도 동력!'··· 돈 벌어주는 오픈소스의 비밀
->오픈소스 소프트웨어를 사용하지 않는 7가지 이유
---------------------------------------------------------------

성능 향상
새 커널에는 사용자 공간의 잠금 없는 동시 제어 메커니즘인 ‘재시작 시퀀스(RSEQ, Restartable Sequence)’가 포함됐다. RSEQ 시스템 호출은 사용자 공간 작업의 속도를 높인다. 일부 마이크로 벤치마크에서 성능 향상이 수치로 확인되기도 했다. 이는 또 커널 스케줄러 코드에 중요한 성능 향상을 가져온다. 이런 변화 덕분에 시스템 성능이 전반적으로 크게 향상될 것으로 기대된다.

리눅스 4.18이 제공하는 또 다른 성능 향상은 USB 3.2에서 듀얼 레인 전송을 지원하는 것이다. 덕분에 타입 C 케이블을 사용하는 호스트와 장치에서 USB 장치의 데이터 전송 속도가 빨라졌다. 리눅스 커널 4.18은 또한 비동기 IO에 새로운 커널 폴링 인터페이스를 제공한다. 파일 기술자 세트를 폴링, 차단 없이 I/O를 실행할 수 있는 대상을 결정한다. 이 또한 성능 향상을 가져온다. 이 새 커널은 ‘TCP zero-copy receive API’를 제공하고, 고성능 AF XDP 소켓을 지원한다. 즉 성능을 향상하면서 CPU 사이클과 메모리 대역폭은 절약한다.

2038년 Y2K 문제 해결
새 커널에는 오랫동안 알려져 있던 2038 문제를 해결하는 기능도 포함됐다. 많은 사람이 1999년 말을 앞두고 많은 사람을 걱정시킨 Y2K(밀레니엄) 버그를 기억할 것이다. 당시 사람들은 데이터 필드에 두 자리의 연도를 사용하는 시스템과 애플리케이션이 12월 31일 자정을 기준으로 시간을 1900년으로 인식하면서 충돌이 발생할까 우려했다. 유닉스는 고유한 날짜 저장 방식 때문에(Unix Epoch 이후 초의 수), 2028년 1월 19일에 이와 유사한 문제가 발생할 수 있다. 이에 따라 4.18 커널에서는 timespec의 구조를 개선해 해당 날짜에 3시 14분 7초가 됐을 때 32비트 시스템에서 이런 문제가 발생하지 않도록 수정됐다.

기타 4.18의 변화:

- 이제 권한이 없는 사용자도 사용자 공간에서 완전히 기능하는 파일 시스템을 구현할 수 있도록 도와주는 FUSE 파일 시스템을 탑재할 수 있다.
- 32비트 ARM 장치를 대상으로 ARM 스펙터(Spectre) 완화 픽스를 제공한다.
- 이제 많은 하이 엔드(고급 및 고가) 모바일 기기에서 사용하는 SoC(System on Chip)인 퀄컴 스냅드래곤 845(가장 빠른 모바일 프로세서)를 지원한다.
- 라스베리 파이(Raspberry Pi) 3B 및 3B+를 완전히 지원한다.
- 서버와 PC 모두 성능에 도움을 주는 전원 관리 업데이트가 포함됐다.
- 델(Dell) 하드웨어에서 썬더볼트(Thunderbolt)를 기본 지원한다.

이처럼 4.18 리눅스 커널에는 성능, 보안, 기능성에 있어 환영할 만한 변화가 다수 추가됐다. 특히 ‘2038 문제’에 관해 더는 걱정하지 않아도 된다. ciokr@idg.co.kr

X