Linaro Connect Keynote: Todd Kjos "Android kernels: How the sausage is made"

An update on the Android problem

Please consider subscribing to LWN

Subscriptions are the lifeblood of If you appreciate this content and would like to see more of it, your subscription will help to ensure that LWN continues to thrive. Please visit this pageto join up and keep LWN on the net.

By Jonathan Corbet
November 7, 2017
2017 Maintainers Summit
Android has been a great boon to the kernel community, having brought a great deal of growth in both the user and the development communities. But Android has also been a problem in that devices running it ship with kernels containing large amounts (often millions of lines) of out-of-tree code. That fragments the development community and makes it impossible to run mainline kernels on this hardware. The problematic side of Android was discussed at the 2017 Maintainer Summit; the picture that resulted is surprisingly optimistic.

Greg Kroah-Hartman started by saying that he has been working for some time with the system-on-chip (SoC) vendors to try to resolve this problem, which he blames primarily on Qualcomm for having decided not to work upstream. Qualcomm has since concluded that this decision was a mistake and is determined to fix it, but the process of doing so will take years. The other SoC vendors are also committed to closing the gap between the kernels they provide and the mainline but, again, getting there will take a while.

Google's new rules requiring the use of long-term support kernels with Android and keeping up with updates should also help. If vendors do not follow those rules, he said, he will eventually stop maintaining the LTS releases. For now, though, he is running an experiment where he will support the 4.4.x kernels for a period of six years. Vendors are coming around to using those [Greg
Kroah-Hartman]updates, he said, but there is a new problem in the form of carriers who are proving unwilling to ship those updates. He is trying to get carriers to put one out every six months for now.

Rom Lemarchand, Google's Android kernel manager, said that newer devices are shipping with 4.4 kernels now. The SoC market cycle is such that these chips will always run a two-year-old kernel. The two-year support lifetime for LTS kernels thus didn't work well for SoC vendors; just about the time that they ship something, the support goes away. Hopefully the six-year support period will work better. Updates are still a problem, though; vendors still are working under the mentality that they only need to take patches that have CVE numbers attached to them, which is not the case. Kroah-Hartman added that they weren't even taking all of the patches with CVE numbers. Kees Cook said that none of the vendors have decent testing for their kernels and don't want to merge any changes at all. They don't, he said, want to admit that they are bringing in LTS patches.

Along the lines of testing, there was some discussion of the Linux Test Project (LTP). This project has tended to be viewed dismissively by kernel developers, but it is evidently the recipient of more resources and has been getting better. There may eventually be value in integrating LTP into the kernel self tests. Linus Torvalds said that even an improved LTP is not that interesting compared to real workloads, though, so he would much rather see Android running on mainline kernels. This is evidently being worked on, but is not there yet. Lemarchand said that the HiKey boards are staying as close to mainline and can boot a 4.9 kernel, but Arnd Bergmann pointed out that the HiKey boards are no longer being produced.

Somebody asked: has any Android phone ever done a major kernel upgrade after it has been shipped? That is evidently a difficult proposition, since there a number of regulatory certifications that must be redone. But the Galaxy Nexus and Galaxy S phones both saw major kernel upgrades, so it is possible. Torvalds noted that there are a lot of Android devices that are not phones, tablets for example, that might prove to be better development devices. It would be nice if mainline developers could run their own kernels on real devices. Bergmann said that the gap is shrinking on some devices, and Kroah-Hartman repeated that he is working toward this goal with the SoC vendors, but the process should be expected to take about six years.

Cook said that applying the larger updates involved in following the LTS kernels completely should eventually make vendors more comfortable with larger kernel changes in general. Sean Paul said that running mainline kernels on Android devices may well become possible soon, but phones still probably will not jump to new major releases. Even that would be good, though, Bergmann said; the current out-of-tree code problem defeats the goal of building a single ARM kernel for all devices. Fixing that would enable third-party distributors to ship systems for multiple phones. Torvalds said that, even if vendors don't upgrade their devices, the ability to do so would enable some useful regression testing. James Bottomley said that the whole situation is a repeat of the enterprise Linux problem from many years ago.

Ted Ts'o asked if there were any ARM Chromebooks that could be used as development machines; Paul answered that the ones based on Rockchip SoCs were close. Torvalds asked about the status of the Mali GPU driver; Bergmann responded that there had been one person working on reverse-engineering that device, but he didn't work well with other developers. Now somebody else is making progress with the older GPUs, but nobody is working on current-generation devices. It was said that everybody within ARM is in favor of solving the problem by open-sourcing ARM's driver — except for one recalcitrant high-level manager.

Torvalds said that, if the Mali problem could be solved, the community as a whole would be in good shape. Bergmann said that there are currently four ARM GPUs with good free-software support, but they are all older. Going forward, Mali seems to be the GPU of choice for Android devices, so that is the problem that needs to be solved. Lemarchand said that pressure is being applied from the Android side as well.

The final conclusion of this session was that, while the Android problem has not gone away, the situation is far better than it was one year ago.

[Your editor would like to thank the Linux Foundation, LWN's travel sponsor, for supporting his travel to this event].

Android 문제에 대한 업데이트

안드로이드는 커널 커뮤니티에 큰 도움이되었으며 사용자 커뮤니티와 개발 커뮤니티 모두에서 큰 성장을 이루었습니다. 그러나 안드로이드는 많은 양의 (종종 수백만 라인의) 트리가 아닌 코드를 포함하는 커널을 탑재 한 장치를 실행하는 장치에서 문제가되고 있습니다. 이는 개발 커뮤니티를 파괴하고 이 하드웨어에서 메인 라인 커널을 돌리는 것을 불가능하게 만든다. Android의 문제는 2017 Maintainer Summit에서 논의되었습니다. 그 결과로 얻은 그림은 놀라 울 정도로 낙관적 인 것이었다.

Greg Kroah-Hartman은이 문제를 해결하기 위해 시스템 온칩 (SoC) 공급 업체와 함께 얼마 동안 노력해 왔다고 말하면서 시작했습니다. 그는이 문제를 주로 업스트림에서 일하지 않기로 결정한 Qualcomm의 책임이라고 비난했습니다. Qualcomm은 이 결정이 실수 였고이를 수정하기로 결정했지만 그 과정은 수 ​​년이 걸릴 것이라고 결론지었습니다. 다른 SoC 벤더들은 그들이 제공하는 커널과 메인 라인 사이의 갭을 줄이기 위해 노력하고 있지만, 또 다시, 거기에 점점 더 오래 걸릴 것이다.

Android에서 장기 지원 커널을 사용하고 업데이트를 유지해야하는 Google의 새로운 규칙도 도움이됩니다. 공급 업체가 이러한 규칙을 따르지 않는다면 그는 결국 LTS 릴리스 유지를 중단 할 것이라고 그는 말했다. 현재 그는 4.4.x 커널을 6 년 동안 지원할 실험을하고 있습니다. 공급 업체는 이러한 [Greg Kroah-Hartman]업데이트 를 사용하기 위해 다가 가고 있지만, 해당 업데이트를 제공하지 않으려는 항공사의 형태로 새로운 문제가 있다고 그는 말했다. 그는 통신 사업자가 현재 6 개월마다 한 대씩 판매하도록 노력하고 있습니다.

Google의 안드로이드 커널 관리자 인 Rom Lemarchand는 새로운 장치가 현재 4.4 커널로 출하되고 있다고 말했다. SoC 시장 사이클은 이러한 칩이 항상 2 년 된 커널을 실행하는 것과 같습니다. 따라서 LTS 커널의 2 년 지원 수명은 SoC 공급 업체에게 적합하지 않았습니다. 그들이 무언가를 선적 할 무렵에는 지원이 사라집니다. 잘하면 6 년 지원 기간은 더 잘 작동합니다. 그러나 업데이트는 여전히 문제입니다. 공급 업체들은 여전히 ​​CVE 번호가 붙은 패치 만 필요로한다는 사고 방식으로 작업하고 있습니다. Kroah-Hartman은 CVE 번호로 패치를 모두 가져 가지도 않았다고 덧붙였습니다. 키즈 쿡 (Kees Cook)은 벤더 중 어느 누구도 커널 테스트를 제대로하지 않았으며 변경 사항을 병합하지 않을 것이라고 말했다. 그들은하지 않는다고 그는 말했다.

테스트 라인을 따라 LTP ( Linux Test Project)에 대한 토론이있었습니다 이 프로젝트는 커널 개발자들에 의해 무시당하는 경향이 있지만 분명히 더 많은 리소스를받는 사람이며 점점 좋아지고 있습니다. 결국 LTP를 커널 자체 테스트에 통합하는 데 가치가있을 수 있습니다. 리누스 토발즈 (Lius Torvalds)는 개선 된 LTP조차도 실제 작업량에 비해 재미 있지는 않다고 말했다. 그래서 그는 Android가 메인 라인 커널에서 실행되는 것을 많이 보게 될 것이라고 말했다. 이것은 분명히 작업 중이지만 아직 없습니다. Lemarchand는 HiKey 보드가 메인 라인에 가깝게 머물면서 4.9 커널을 부팅 할 수 있다고 말했지만 Arnd Bergmann은 HiKey 보드가 더 이상 생산되지 않는다고 지적했다.

누군가가 물었습니다 : 안드로이드 폰이 출하 된 후 주요 커널 업그레이드를 한 적이 있습니까? 그것은 분명해야 할 어려운 규정입니다. 왜냐하면 거기에 많은 규제 인증을 다시해야하기 때문입니다. 그러나 Galaxy Nexus와 Galaxy S 휴대 전화는 모두 주요 커널 업그레이드를 보았으므로 가능합니다. 토발즈는 휴대폰, 타블렛 등의 안드로이드 기기가 많아 개발 기기가 더 좋을 것이라고 전망했다. 주요 개발자가 실제 장치에서 자체 커널을 실행할 수 있다면 좋을 것입니다. Bergmann은 일부 장치에서 그 격차가 줄어들고 있으며 Kroah-Hartman은 SoC 공급 업체와 함께이 목표를 향해 연구하고 있다고 반복했지만 프로세스는 약 6 년이 걸릴 것으로 예상됩니다.

쿡 (Cook)은 LTS 커널을 완전히 따르는 데 필요한 더 큰 업데이트를 적용하면 궁극적으로 더 큰 커널 변경 사항에 대해 더 안락하게 만들 것이라고합니다. 숀 폴은 안드로이드 기기에서 주류 커널을 실행하는 것이 곧 가능해질 것이라고 말했다. 그러나 휴대폰은 여전히 ​​새로운 메이저 릴리스로 이동하지는 않을 것이라고한다. 비록 그것이 좋을지라도 Bergmann은 말했다. 현재의 트리 외부 코드 문제는 모든 장치에 대해 단일 ARM 커널을 작성하는 목표를 무효로합니다. 이를 통해 타사 배포자는 여러 대의 전화 시스템을 출하 할 수 있습니다. 토발즈는 벤더가 디바이스를 업그레이드하지 않더라도 그렇게 할 수있는 능력이 유용한 회귀 테스트를 가능하게 할 것이라고 말했다. 제임스 보텀 리 (James Bottomley)는이 모든 상황이 수년 전 엔터프라이즈 리눅스 문제의 반복이라고 말했다.

Ted Ts'o는 개발 기계로 사용할 수있는 ARM 크롬 북이 있는지 질문했습니다. Paul은 Rockchip SoC를 기반으로 한 것이 가까운 것이라고 대답했습니다. Torvalds는 Mali GPU 드라이버의 상태에 대해 질문했습니다. Bergmann은이 장치를 리버스 엔지니어링하는 사람이 한 명 있었지만 다른 개발자와는 잘 작동하지 않는다고 대답했습니다. 이제는 다른 사람들이 구형 GPU로 진보하고 있지만, 현재의 장치에서는 아무도 연구하지 않습니다. ARM 내부의 모든 사람들은 불만을 터트려는 한 명의 고위 관리자를 제외하고는 ARM의 드라이버를 오픈 소싱함으로써이 문제를 해결하고자합니다.

토발즈는 말리 문제가 해결 될 수 있다면 공동체 전체가 좋은 모습을 보일 것이라고 말했다. Bergmann은 현재 자유 소프트웨어 지원이 좋은 ARM GPU가 4 개나 있지만 모두 오래되었다고 전했다. 앞으로 말리는 안드로이드 기기의 GPU로 보입니다. 그래서 해결해야 할 문제입니다. Lemarchand는 안드로이드 측에서도 압력이 가해지고 있다고 말했다.

이 세션의 마지막 결론은 Android 문제가 사라지지 않았지만 상황이 1 년 전보다 훨씬 낫다는 것입니다.

[편집자는 LWN의 여행 스폰서 인 Linux Foundation에게이 행사에 대한 여행 지원에 감사드립니다.]

YouTube 및 Netflix에서 AV1 비디오 샘플을 다운로드 할 수 있습니다.

우리는 먼저 H.265와 경쟁하기 위해 Google, Amazon, Intel, Microsoft 및 기타 여러 회사의 지원을 받아 2016 년에 AV1 로열티가없는 오픈 소스 비디오 코덱 을 다루었으며 비디오를 제공하는 비용을 절감했습니다. 더 나은 압축 비율 및 로열티의 부족 덕택입니다.

그로부터 지난 3 월 AV1 사양이 발표 되면서 진보가 이루어졌으며 현재 YouTube와 Netflix는 테스트 용으로 몇 가지 베타 AV1 비디오 샘플을 제공하고 있습니다.

Youtube AV1 비디오 샘플
확대하려면 클릭하십시오.

위 스크린 샷에서와 같이 YouTube에서 AV1 형식의 일부 동영상을 재생하려면 최신 (베타) 버전의 Chrome 또는 Firefox를 설치해야하며 YouTube의 AV1 베타 재생 목록에 설명 된 다른 지침을 따르십시오 .

Media Source 내 MP4의 AV1에 대한 지원은 Chrome 70에서 사용할 수 있으며 Firefox 63은 media.av1.enabled 설정으로 9 월 13 일 이후에 제작됩니다.

지원되는 브라우저를 사용하고 youtube에서 'SD 용 AV1 선호'설정을 선택하십시오 testtube 에서 480p 미만으로 재생할 때는 AV1이 사용되고, 높은 해상도에서는 VP9로 전환해야합니다.

YouTube AV1
확대하려면 클릭하십시오.

현재 샘플은 480p에서만 사용할 수 있으며 비트율은 현재 상당히 높지만 테스트 용입니다 ... Stats for Nerds 오버레이 에서 " codec av01 "을 확인하십시오 avc1이나 vp09를 보지 않고 대신 보았다면 뭔가 잘못되었습니다.

로컬 용 샘플을 다운로드하려면 모든 비디오 다운로더에서 그렇게 할 수 있다고 가정합니다. 그래서 우분투 18.04에서 youtube-dl 명령 줄 도구로 시도했습니다.

하지만 안타깝게도이 유틸리티는 "av01.0.05M.08"코덱에 대해 들어 본 적이 없기 때문에 AV1 코덱으로 비디오를 걸러냅니다. 우분투 저장소는 대개 최신 버전의 도구가 없으므로 개발자가 제공하는 도구를 얻으십시오.

이제 비디오 형식 목록에서 AV1 "av01"샘플을 찾을 수 있습니다.

AV1 코덱 및 1920 × 1080 해상도로 포맷 399를 다운로드 해 봅니다.

이 기능은 좋지만 동영상 정보를 빠르게 확인해 보겠습니다.

완전한. 저는 이제 1080p AV1 비디오를 알고 있기 때문에 Chrome으로 돌아가서 "항상 AV1 선호"를 설정 했으며 AMD Ryzen 7 2700U 프로세서 기반의 노트북 은 대부분 비디오를 잘 재생할 수 있지만 전반적인 CPU 사용량이 적음에도 불구하고 비디오가 수 초 동안 고르지 않게되고 버퍼링 문제가 발생하지 않는 9 초 표시의 일부 시퀀스의 경우 이 단계에서 디코딩은 최대 두 개의 스레드에 의존하는 것처럼 보입니다.

Netflix 계정이 없지만 Anandtech 에 따르면 이 회사는 432p에서 1080p까지 8 비트 또는 10 비트 색 깊이 의 단일 비디오를 제공하고 있습니다.

AV1 채택 타임 라인
확대하려면 클릭하십시오.

Anandtech도 AV1 채택 일정을 발표했으며, AV1을 데스크톱 웹 브라우저에서 사용할 수있을 것으로 기대하고 있지만, AV1을 하드웨어로 처리 할 수있는 실리콘으로 된 첫 번째 장치는 2020 년에 출시 될 예정입니다.

SSD의 기초 지식, 질문 없이 대답 할 수 있어 ?

- HDD와의 차이, MLC / TLC, 3D NAND는 고내? 순차 / 랜덤 액세스는?

 PC에서 사용할 수있는 다양한 스토리지. 줄거리를 몰라도 사용할 수 있지만, 이해하고 사용하면 성능을 살려 썬다 수 있습니다. 스펙의 읽는 법이나 다루어 등 모르는 것은 의외로 많을 것이다. 살릴 수도 죽일 수도 당신의 우데대로입니다. DOS / V POWER REPORT 2018 년 10 월호 「특집 · SSD / HDD / NAS + αPC 스토리지 강화 계획」에서는 많은 스토리지 기몬에 대답하고 있습니다. 여기에서는 SSD 편에서 5 개의 기몬을 발췌하여 제공합니다.

TEXT : 스즈키 雅暢

SSD는 무엇입니까?

A : 비 휘발성 메모리를 사용하는 스토리지입니다

 SSD (Solid State Drive)는 비 휘발성 메모리 (전원이 공급되지 않아도 데이터를 저장할 수있는 메모리)를 이용한 스토리지입니다. 메모리로는 "NAND 플래시 메모리 '가 주로 사용되고 있습니다. SSD의 실체는 메모리와 컨트롤러를 탑재 한 작은 보드입니다. 모터로 움직이는 부품이 사용되고있는 HDD와 달리 SSD의 데이터를 읽고 쓰는 메모리에 전류 조작만으로 완결하기 위해 빠르고 저소음 진동이나 충격에 강한 장점이 있습니다. 현재는 HDD 대신 PC의 메인 스토리지로되어 있습니다.

모양, 인터페이스 등 사양의 폭이 너무 넓어 혼란합니다

A : 우선, "폼 팩터 '와'인터페이스 '를 이해하자

 SSD의 형상을 「폼 팩터 '라고합니다. "인터페이스"는 SSD와 PC 간의 전송로입니다. 현재는 최대 데이터 속도가 600MB / s의 Serial ATA 3.0 및 약 4GB / s의 PCI Express 3.0 x4의 2 종류가 있으며, 고성능 SSD는 후자를 채용하고 있습니다. 중요한 점은 폼팩터와 인터페이스는 다른 요소이며, 구입시 모두 확인해야 할 것입니다. M.2라고하면 PCI Express를 이미지하는 것이 많지만, Serial ATA 것도 있습니다. 또한 최근의 PCI Express SSD는 "NVMe"라는 명령 프로토콜을 사용하고 있기 때문에 "NVMe SSD '라고 불리기도합니다.

[검증 환경]

CPU : Intel Core i7-8086K Limited Edition (4GHz) 메인 보드 : ASUSTeK ROG STRIX Z370-F GAMING (Intel Z370) 메모리 : Micron Crucial Ballistix BLT2K8G4D26AFTA (PC4-21300 DDR4 SDRAM 8GB × 2) 비디오 카드 : 현인 지향 GALAKURO GK-GTX1070Ti-E8GB / WHITE (NVIDIA GeForce GTX 1070 Ti) 시스템 SSD : Samsung SSD PM961 MZVLV512HCJH [M.2 (PCI Express 3.0 x4), 512GB, PCI Express SSD : Samsung SSD 970 PRO MZ-V7P1T0BW [M. 2 (PCI Express 3.0 x4), 1TB, Serial ATA SSD : Samsung SSD 860 EVO MZ-76E500B / IT (Serial ATA 3.0,525GB), Serial ATA HDD : Seagate IronWolf ST12000VN0007 (Serial ATA 3.0,7,200rpm, 12TB) OS : Windows 10 Pro 64bit 버전

SSD의 스펙의 의미를 가르쳐

A : '순차'과 '랜덤'의 차이에서 기억합시다

 SSD의 스펙으로 설명되는 순차 읽기 / 쓰기는 연속적인 데이터의 읽고 쓰기를 나타냅니다. 예를 들어, 파일 복사 등의 속도는이 수치가 기준이됩니다. 랜덤 읽기 / 쓰기는 작은 크기 (4KB 표준)의 불규칙한 데이터를 읽고 있습니다. 시작을 포함한 OS의 기본 조작이나 앱 시작, Web 브라우징과 같은 편안함을 기준으로합니다. 이들과는 별도로 SSD의 명령 처리 성능을 나타내는 IOPS이다. 스펙도 있지만, 대개는 최대 값 (주로 QD32)입니다. 일반적인 PC 사용 상황에서는 QD1가 대부분이므로, QD32의 IOPS는별로 도움이되지 않습니다. QD1 랜덤 성능을 측정 할 수있는 벤치 마크 결과가 도움이 될 것입니다.

3D NAND라고 자주 듣는데 무엇?

A : 대용량화하기 쉽고 신뢰성에 유리합니다

 3D NAND는 3 차원 구조의 NAND 플래시 메모리입니다. 기존 제품 (planar 형)는 메모리 셀을 작게함으로써 대용량화 해 왔지만, 작을수록 전기적으로 불안정 해집니다. 컨트롤러에서 신뢰성을 커버했다지만, 그것은 성능과 전력 손실로 이어져 신뢰성도 한계에 다가했습니다. 3D NAND는 메모리 셀을 위로 쌓아 메모리 셀을 작게하지 않고 대용량화하고 있기 때문에, 성능, 신뢰성, 양면에 유리합니다.

SSD의 내구성이란? MLC라고 좋은가?

A : TBW 확인하세요

 SSD에 사용되는 NAND 플래시 메모리는 재기록 횟수의 제한이 있고, 그것을 넘으면 사용할 수 없게됩니다. NAND 형 메모리 셀에 기록하는 데이터의 양에 따라 몇 가지 종류가 있습니다. 위의 그림에서 나타난 바와 같이, SLC와 MLC는 덮어 쓰기 횟수의 제한이 커지기 때문에 내구성에 유리하지만 용량 당 비용이 높고 붙습니다. 덧붙여 Intel의 "3D XPoint 메모리"는 NAND 형 플래시 메모리와는 근본적으로 구조가 다르고, 개서 회수는 SLC NAND의 1,000 배 이상에 달한다.

 내구성은 컨트롤러의 설계 및 캐시 메모리에 따라 달라집니다. 이러한 요소를 포함하는 SSD의 내구성 기준이 "TBW (Total Byte Written)"입니다. 이것은 SSD가 사용할 수 없게 될 때까지 얼마나 많은 데이터를 쓸 수 있는지를 보여줍니다. TBW는 SSD의 용량이 클수록 커지는 것이 보통이지만, 같은 용량이라면, TLC NAND보다 MLC NAND를 탑재 한 제품이 더 TBW 큰 경향이 있습니다.