Franco Kernel 및 다양한 장치용 기타 애플리케이션 개발자인 Francisco Franco와의 인터뷰 1부입니다.
나는 최근 가장 인기 있는 안드로이드 커널 중 하나인 프랑코 커널(Franco Kernel) 뒤에 있는 사람과 인터뷰하는 즐거움을 누렸습니다. 현재 커널은 다양한 Nexus 및 OnePlus 장치와 Google Pixel/Pixel XL을 포함한 다양한 장치에서 사용할 수 있습니다.
이 부분에서는 Francisco Franco의 커널 개발 여정과 Android가 수년에 걸쳐 겪은 변화에 대한 그의 의견에 대해 이야기합니다.
저는 XDA에서 Franco Kernel의 개발자인 Francisco Franco를 인터뷰하기 위해 여기 있는 Adam Conway입니다! 자신을 소개하고 싶나요?
물론이죠, 방금 말씀하신 대로 제 이름은 Francisco이고 XDA에 가입한 지 벌써 100만 년이 된 것 같아요! 온갖 일을 해왔습니다. 커널, 앱, 최근에는 시간이 지나면 지루해지기 때문에 커널을 조금 더 느슨하게 사용하고 있지만 여전히 대부분의 장치에 전력을 다하고 있습니다.
좋아요, 그래서 많은 사람들이 당신의 작품에 대해 잘 알고 있을 것입니다. 하지만 많은 사람들은 작품 뒤에 있는 실제 인물에 대해 잘 알지 못할 것입니다. 그렇다면 커널 이전에 어떤 종류의 과거 경험이 있으신가요? 컴퓨터 과학 학위나 그와 유사한 것을 사전에 좋아하시나요?
나는 성장하는 동안 여느 아이들처럼 항상 컴퓨터에 대한 열정을 가지고 있었습니다. 18살이 된 후 나는 다른 사람들처럼 대학에 가기로 결심했고, 컴퓨터 공학이나 뭐 그런 것이었지만 1년 정도 지나고 보니 내가 실제로 열정을 가진 분야는 아니라는 걸 알았습니다. 에 대한. 그해 이후 내 기대는 낮아지기 시작했습니다. 왜냐하면 모든 것이 말로만 이루어지고 행동이 없었기 때문입니다. 지루함을 느끼기 시작했어요 - 내가 남들보다 잘해서가 아니라 그냥 평균이었거든요 - 하지만 실제 훈련은 아니었다 정확히 내가 원했던 것. 그래서 부모님과 이야기를 나눴는데 부모님도 제가 그다지 행복하지 않다는 걸 아셨죠. 2010년 크리스마스에 나는 첫 번째 안드로이드 폰을 갖게 되었다. LG P500은 아주 저렴한 저가형 전화기입니다. 하지만 저는 그것이 Linux를 실행하고 있다는 것을 알고 있었고, 대학에서 제가 가장 좋아하는 분야는 컴퓨터 아키텍처나 운영체제 같은 것이었습니다. 그리고 우리는 쉘에 대해 조금 배우고 Linux 커널에 대해 조금 이야기했습니다. 커널의 일부였고 커널의 모든 연결성과 실제 운영 체제였습니다. ~였다
매력적인 나를 위한. 그런 다음 친구와 함께 오래된 노트북용 Linux 커널을 다시 빌드하기 시작했습니다. 우리는 그렇게 하면서 노트북 컴퓨터를 100번 정도 충돌시켰지만 그 과정을 통해 배웠습니다. 그리고 나서 LG를 가지고 놀기 시작했는데, 제가 가장 먼저 한 일은 성능을 조금 더 높이려고 노력한 것 같아요. 왜냐하면 그 장치가 실제로 꽤 형편없었거든요. 그래서 제가 할 수 있는 최선의 방법은 실제 작업을 위해 표준 Linux 커널 매개변수를 살펴보는 것이었습니다. 메모리 관리와 같은 것, 그리고 이미 있었던 것보다 조금 더 나은 것을 찾으려고 노력하십시오. 거기. 그때는 좀 즐거웠어요.이전 인터뷰에서 이 내용을 말한 적이 없는 것 같은데, 당시 해당 장치는 YAFFS라는 오래된 파일 시스템을 사용하고 있었습니다. 이는 또 다른 플래시를 의미합니다. 파일 시스템인데 RAM 지원 스왑 디스크처럼 마운트하려고 하면 꽤 느려서 구체적인 내용은 기억나지 않지만 온갖 종류의 작업을 수행했습니다. 이에 대한 실험을 통해 우리는 재부팅할 때마다 재구축해야 하는 RAM 메모리 위에 Dalvik을 탑재하게 되었습니다. 아시다시피 RAM은 매 재부팅마다 사라지기 때문입니다. 재부팅할 때. 하지만 애플리케이션을 열고 벤치마크를 실행하는 속도가 훨씬 빨라져서 만족스러웠습니다. 그래서 그 이후로 좀 더 깊게 들어가 해당 기기용 LG 커널 소스를 컴파일하려고 하다가 온갖 나쁜 짓을 하게 됐어요. 판단과 온갖 실수 - Wi-Fi 네트워크, 무엇이든 - 아무것도 없는 사람에게서 상상할 수 있는 모든 것 경험. 재미있었어요. 많이 배웠어요. 그렇게 1년에서 6개월 정도 하고 나니 좀 더 집중하게 되었고, 다운로드를 받기 위해 무엇을 해야 하는지 조금 더 잘 알게 되었습니다. 그것이 결국 우리 모두가 원하는 것입니다. 그 후, 나는 약간의 기부를 받고 다른 기기로 옮겨갈 수 있었습니다. 아마도 Nexus S, 그 다음에는 Galaxy Nexus를 거쳐 그 기간 이후에 첫 번째 앱을 내놓았을 것입니다. 나는 매우 운이 좋았고 새 장치를 구입할 자금을 마련할 수 있었고 거기서부터 성공을 거두었습니다. 그래서 결국 내가 모든 것을 빚진 것 같아요. XDA라고는 말하지 않겠지만 플랫폼 XDA가 우리에게 제공하는 것입니다.
그리고 그 뒤에는 커뮤니티가 있습니다.
예 예, 플랫폼, 즉 커뮤니티와 실제 포럼을 의미합니다. 듣고 계시는 분들에게 말씀드리자면, 이것은 유료 후원이나 그 어떤 것이 아닙니다. 저는 이 말을 한다고 해서 돈을 받는 것이 아닙니다. 그것은 단지 사실입니다!
영상도 없고 총이 머리에 겨누는 걸 사람들이 못 봐서 괜찮아요.
하하하 그렇긴 한데 누군가는 내가 이런 말 하면 돈 받는다고 할 테니까 그냥 말할게요! 하지만 예, 예, 멋진 것을 만들고, 많은 것을 배울 수 있는 놀라운 플랫폼이었습니다. 저는 대부분 실수를 통해 모든 것을 배웠고, 배움 속에서도 여전히 상당한 문제를 겪습니다. Xiaomi Redmi Note 3를 파괴했습니다. 어, 부트로더가 방금 파괴되었습니다. 그래서 저는 그것을 저 뒤쪽에 있는 제 Windows 컴퓨터에 다시 연결해야 하고 모든 것을 다시 플래시해야 합니다. 그리고 그것은 3개월 정도 여기에 앉아 있었습니다. 내가 그 장치에 관심을 두지 않는다는 이유로 사람들로부터 온갖 미움을 받고 있고 그래서 아직도 [실수]를 하고 있는 것 같아요. 몇 년이 지난 후에도 여전히 배울 것이 남아 있으며 이 여행을 이겨낸 것은 정말 행운이었습니다. 엄청난.
글쎄요, 당신이 이 일을 시작한 것을 보면... LG P500이었나?
응, 응.
몇 년 전이었죠? 원래 Android 버전에 있었던 일이겠죠? Froyo 근처인가?
네, Froyo와 함께 배송되었고 몇 달 후에 Gingerbread로 업그레이드되었습니다. 내 생각에 그 장치는 2010년, 2011년 초, 아마도 그 이전이었을 것 같습니다. 내 XDA 계정은 2010년 12월에 생성된 것으로 알고 있지만 사전에 장치를 가지고 있었습니다. 그러니까 아마도 그 무렵이었던 것 같아요.
그 이후로 Android는 어떻게 성능 면에서 발전해 왔나요? 그 당시 커널을 작성하는 것과 지금은 커널을 작성하는 것이 어떻게 바뀌었나요? 그리고 변화에 대한 귀하의 의견은 어떻습니까?
커널 측면에서는 실제 Linux 커널과 Android 팀이 실제로 원했던 모든 변경 사항을 통해 발전했다고 생각합니다. 특정 Android 릴리스에 대해 구현하므로 원하는 것에 따라 커널이 가질 특수 기능의 대부분을 지시합니다. 배송합니다. 하지만 실제 성능은 더 많은 코어가 실제로 많은 도움이 되는 것 같습니다. 그 당시에는 실제로 이를 수행할 방법이 없었기 때문입니다. 이 스레드를 이동하거나(sic), 백그라운드 스레드를 통한 네트워크 요청 또는 적어도 실제 실시간을 상상해 보세요. 스레딩. 작업을 분산시킬 수 있는 방법이 더 많아지고 모든 사람이 약간의 CPU 점유율을 차지하려고 하기 때문에 Android가 속도를 늦추는 일이 없다는 것이 수년에 걸쳐 가장 큰 변화라고 생각합니다. 무엇보다 Linux가 뒷받침하는 멀티코어와 실제 멀티스레딩이 가능하다고 생각합니다. 그게 가장 큰 변화라고 생각했어요.
아 그렇군요. 그렇다면 HMP와 EAS에 대한 귀하의 의견은 어떻습니까? 분명히 EAS는 새로운 것일 뿐이고 Google Pixel을 사용하는 것과 같은 일부 장치에서만 사용되기 때문입니다. 그렇죠?
예, 현재 Galaxy S8을 사용하고 있지만 Pixel도 사용하고 있습니다. 저는 둘 다 자세히 알지 못합니다. 이는 특정 시간에 장치에서 일어나는 일에 따라 다중 클러스터 장치가 어떻게 작동해야 하는지에 대한 서로 다른 구현일 뿐입니다. 두 가지 전력 소비로 두 개의 서로 다른 클러스터를 실행하는 것은 매우 어렵습니다. 위아래로 이동하는 작업에 대한 기대치를 충족해야 하며 거기에는 대기 시간이 수반됩니다. HMP는 이러한 작업의 첫 번째 실제 구현이었습니다. ARM을 위한 실제 멀티 클러스터 아키텍처입니다. 제가 정확하게 기억한다면 HMP가 실제 사용되기 전에 Samsung은 초기 저전력 코어와 같은 처음 4개의 코어를 사용하거나 4개의 고성능 코어를 사용했지만 결코 실행되지 않은 구현 동시. 그러나 나중에 HMP를 사용하면 코어를 언제든지 사용할 수 있었고 작업이 한 클러스터에서 다른 클러스터로 또는 그 반대로 이동되어 작동했습니다. 하지만 실제로 어떤 종류의 빈도가 사용될지 결정하기 위해 이를 주지사에게 보여줄 만큼 스케줄러로부터 많은 정보가 없었습니다. 특정 시간에 처리해야 했기 때문에 [약] 20초 안에 무슨 일이 일어나는지 이해하려고 노력한 다음 거기서 일어난 일을 바탕으로 무엇을 할지 결정해야 했습니다. 하다. EAS는 미래에 무슨 일이 일어날지 이해하고 이를 바탕으로 실시간으로 결정하는 것에 더 가깝습니다. 각 코어의 전력 출력을 계산한 다음에는 수많은 계산과 복잡한 작업을 수행해야 합니다. 배경
에너지 모델 등이 모든 것을 뒷받침합니다.
예, 그럴 것 같습니다. 매우 복잡합니다. 여러 문서를 읽었지만 세부 사항을 모두 알지는 못하지만 매우 복잡하며 단순히 스위치를 켜고 사용할 준비를 갖추는 것이 아닙니다. XYZ 휴대폰에 EAS를 구현할 수 있느냐는 질문을 많이 받습니다. 내 대답은 언제나 “손잡이를 돌리는 것이 아닙니다. 그런 것이 아닙니다. 이를 구현하려면 Google 직원과 Linaro 직원으로 구성된 전체 팀이 필요했습니다. 그리고 당신은 물건을 옮기고, 일을 하고, 물건을 테스트해야 하는데 그건 너무 많은 일이고 일종의 일입니다. 눈이 먼" 그리고… 응. 어렵다.
그럼 당신이 하고 있는 일이 무엇인지 정확히 알아야 합니다. 그것은 1인 작업이 아니죠?
예, 당신은 당신이 무엇을 하고 있는지 알아야 합니다. 누구나 패치를 선택하고 병합할 수 있지만 실제 테스트를 통해 그것이 올바르게 작동하는지 확인하고 적절한 기계가 필요합니다. 각 구성 요소의 전력 사용량을 감지하기 위해 커널에 각 코어의 전력을 작성할 수 있는 여러 테이블이 있으며 이를 기반으로 코드가 무엇을 할지 결정합니다. 하다. 꽤 복잡해요. 나는 그것이 모든 문제에 대한 확실한 해결책이라고 생각하지 않지만 확실히 현재 우리가 가지고 있는 최고입니다.
그럼 개선된 것으로 보시나요?
네, 물론이죠. 몇 마일 떨어진 곳이죠. HMP나 다른 아키텍처보다 확실히 개선된 것입니다. 왜냐하면 미래에 무슨 일이 일어날지 이해할 수 있다면 훨씬 더 빠르게 반응할 수 있기 때문입니다. 모든 요청이나 기기에서 발생하는 모든 일에 대해 Google Pixel이 매우 빠르고 원활하게 작동하는 이유는 모든 것이 거의 실시간으로 발생하기 때문입니다. 실시간. 성능에 대한 기대치를 달성하는 가장 쉬운 방법은 주파수를 위아래로 움직이는 것입니다.
그렇다면 미래에 EAS 채택이 더 많아진다면 이것이 커널과 관련하여 귀하의 개발에 어떤 영향을 미칠 것으로 보시나요? 여전히 HMP를 고수하시겠습니까, 아니면 이미 출시된 에너지 모델을 사용하시겠습니까? 예를 들어 OnePlus 3에서 [ROM 개발자]는 EAS용 Google Pixel의 에너지 모델을 재사용하고 있습니다. 그런 일을 하고 있는 자신을 볼 수 있나요?
아마 그렇게 하지 않을 것입니다. 장치가 처음부터 EAS와 함께 제공되지 않으면 어떤 식으로든 구현하지 않을 것입니다. 내가 말했듯이 그것은 꽤 긴 과정이고 XDA의 어느 누구도 이 모든 엔지니어들보다 더 잘 알지 못합니다. 그래서 우리는 단지 신의 역할을 하려고 노력하고 있는 것 같습니다.
Android와 커널의 미래에 대해 이야기하는 메모에서 최근 Android Oreo 릴리스에 대한 귀하의 의견은 무엇입니까? 변화가 좋다고 생각하시나요? 새로운 커널 커밋을 살펴보셨나요?
Nexus 6P와 Nexus 5X의 커널 측에는 많은 변경 사항이 없었고 여기저기서 약간의 수정 사항만 있었습니다. Google Pixel에서 그들은 EAS 구현을 반복하고 바인더 섹션을 개선하는 데 시간을 보냈습니다. 이제 바인더는 Project와 함께 Treble은 서로 다른 패키지를 분할하는 것과 같아서 바인더를 개선하고 서로 다른 패키지로 분리하려면 50~100개의 서로 다른 패치를 거쳐야 합니다. 프로세스. 그 외에는 대규모 릴리스를 위한 일반적인 작업이었습니다. 새로운 플랫폼이 출시되면 일반적으로 커널을 그렇게 많이 다루지 않습니다. 커널에는 실제로 많은 QA가 필요합니다. 가끔 한 가지를 변경하면 다른 것에 영향을 미친다는 말을 듣게 됩니다. 하위 시스템. 이것이 일반적으로 수행하는 작업이므로 플랫폼 업그레이드 간에 커널 버전 충돌이 발생하지 않습니다. 그것은 단지 많은 일입니다. 일반적으로 그만한 가치는 없지만 대부분 바인더 작업, 약간의 스케줄러 및 일반적인 보안 수정 사항이었습니다. 나는 그것들을 모두 겪었지만 아무것도 마음에 들지 않았습니다. 내 관심은 바인더에만 집중되었습니다.
아 그렇군요. 정말 표준적인 내용입니다.
네, 꽤 복잡해서 나에게 구체적인 내용을 묻지 않습니다!
이것은 완전히 다른 주제입니다. ext4에 대한 F2FS에 대한 귀하의 의견은 무엇입니까? 많은 사람들이 F2FS가 불안정하고 문제를 일으킨다고 말할 것이기 때문에,나는 그것에 대해 어떻게 생각하는지 궁금합니다.
파일 시스템이 상당히 어렵고 여기저기에 움직이는 부분이 많기 때문에 구체적인 내용은 모르겠습니다. 테스트에 따르면 F2FS는 ext4보다 더 빠르게 성능을 발휘하지 못한다고 말하는 Google 엔지니어의 말을 인용하겠습니다. 그들은 Google Pixel에 대한 테스트를 하고 있었고 F2FS는 지원을 제공하지 않았습니다… 파일 블록 암호화인 것 같고 ext4는 지원합니다. 그것. 그래서 그것만으로도 그냥 폐기하라는 뜻입니다. 두 가지를 생각해야 합니다. ext4는 다양한 회사의 매우 똑똑한 엔지니어들과 함께 20년 동안 작업해 왔으며 그들은 자신들이 무엇을 하고 있는지 알고 있습니다. 내 기억이 맞다면 F2FS는 삼성에서 구현했습니다. 이것은 꽤 새로운 파일 시스템이므로 이렇게 복잡한 것은 개선하고 반복하는 데 시간이 걸립니다. iOS에 방금 출시된 Apple 파일 시스템에서 볼 수 있으며 Mac에서도 동일한 작업을 수행할 예정입니다. OS. 시간이 걸리기 때문에 이러한 일을 올바르게 수행하려면 대규모 팀이 필요합니다. 저는 "작동하면 건드리지 마세요"와 현재 우리가 갖고 있는 것의 열렬한 지지자입니다. 작동하고 있으며 성능 문제를 일으키지 않는다고 생각하므로 그렇게 할 이유가 없습니다. 그것을 엉망으로 만드십시오.
아 알았어, 그거면 충분해! 는 어때 SDCardFS FUSE에서 전환 중인가요? 그것에 대해 당신의 의견은 어떻습니까?
이전 FUSE 파일 시스템이 Android에서 발생한 최악의 일 중 하나였기 때문에 이런 일이 발생했습니다. 성능은 끔찍했습니다. 커널과 사용자 공간 사이에 많은 시스템 호출이 있었고 이제 SDCardFS를 사용하면 제대로 수행되었습니다. 이것을 처리하는 것은 일반적인 파일 시스템입니다. 다시 한 번 매우 복잡한 일이기 때문에 구체적인 내용은 모르지만 제가 해본 결과는 다음과 같습니다. Android 팀의 다양한 팟캐스트를 읽고 보고 들은 내용은 기본적으로 이전 버전의 모든 문제를 해결했습니다. 체계. 정말 끔찍했고 성능도 끔찍했습니다.
이 버튼을 클릭하여 Part 2를 확인하세요!