My English Study매일 만나는 비즈니스 영어
← 시스템 이슈 분석 학습 목록

SYSTEM SW / 2026-08-29 / System issue triage

Diagnosing System Server Freezes Caused by Binder Thread Exhaustion

binder 스레드 고갈로 인한 시스템 서버 멈춤 원인 분석

Orion Lite에서 화면이 약 1분간 멈춘 뒤 소프트 리부트되는 문제가 야간 앱 자동 업데이트 시간대에 집중적으로 보고되었습니다. SQE, 플랫폼 프레임워크, 커널·BSP, 개발자 관계 팀이 덤프에서 확인한 binder 스레드 고갈, 저장 공간 부족 단말의 느린 I/O, 서드파티 런처 앱의 과도한 호출이 겹친 원인과 대응 방안을 논의합니다.

가상의 비즈니스 회의 · 중급~고급 · 2,214단어 · 약 18분

Soyeon Park · SQEElena Park · Platform FrameworkBrian Shin · Platform FrameworkYuna Kwak · Kernel & BSPLisa Han · Developer Relations

01 / English script

Attendance

01 · Soyeon ParkSQE

Good morning, everyone, and thanks for joining on a Saturday. I'm Soyeon from SQE. We have a system freeze on Orion Lite that's been climbing in the field for two weeks, and we finally have good dumps. I've invited Developer Relations as well, because a third-party app seems to be involved.

02 · Elena ParkPlatform Framework

Elena, Platform Framework. System server hangs are my daily bread, so I've already looked at the dumps.

03 · Brian ShinPlatform Framework

Brian, Framework lead. I'm here because whatever we decide will probably touch the package manager, which is my team's code.

04 · Yuna KwakKernel & BSP

Yuna, Kernel and BSP. Soyeon mentioned slow storage, so I'm here for the file system side.

05 · Lisa HanDeveloper Relations

Lisa Han, Developer Relations. I manage our relationships with the major app developers, so if we need one of them to change something, I'm the one who makes the call.

The Symptom

06 · Soyeon ParkSQE

Here's what users report. The phone freezes completely for about a minute, usually in the early morning, and then it shows the boot animation and restarts. Users who are awake often notice it while their alarm is about to ring, which is how it became visible on social media. A few people said their alarm didn't go off.

07 · Brian ShinPlatform Framework

A missed alarm is a serious problem for users, even if the freeze is short. What does the field data show about timing?

08 · Soyeon ParkSQE

About seventy percent of the events happen between 2 a.m. and 6 a.m. local time, which is when the app store runs automatic updates while the phone is charging. The rate is about 0.4 percent of Orion Lite devices per week, and it's roughly three times higher on devices with less than ten percent free storage.

09 · Elena ParkPlatform Framework

Do we know whether it happens on Orion as well, or only Orion Lite?

10 · Soyeon ParkSQE

Orion has it too, but about eight times less often. Orion Lite has slower storage and less memory, which seems to matter.

What the Dumps Show

11 · Soyeon ParkSQE

Elena, can you walk us through the dumps?

12 · Elena ParkPlatform Framework

Sure. I used the order Yuna described at the tech share three weeks ago. The reset reason is the system server watchdog. The main thread of the system server is blocked waiting for a binder reply. When I looked at the system server's binder thread pool, all thirty-one threads were busy. Not one was free to handle new requests, so every incoming call, including the one from the main thread, just waited.

13 · Yuna KwakKernel & BSP

What were the thirty-one threads doing?

14 · Elena ParkPlatform Framework

Twenty-seven of them were waiting on the same lock inside the package manager. Three were handling unrelated requests normally. And one thread was holding the lock while writing package information to storage. That write had been in progress for over forty seconds.

15 · Brian ShinPlatform Framework

Forty seconds for a write? That's absurd. The package information file is usually a few megabytes.

16 · Yuna KwakKernel & BSP

On a nearly full device, it's not absurd at all, unfortunately. When the file system has very little free space, it has to run garbage collection before it can write new data, moving existing blocks around to free up room. On slower storage, like Orion Lite's, that can take tens of seconds, and the writing thread is blocked the whole time.

17 · Elena ParkPlatform Framework

That explains the storage correlation. But there's one more piece. The twenty-seven waiting threads were almost all serving the same app: a popular third-party launcher. It was calling the package manager repeatedly to rebuild its app list.

The Third-Party Launcher

18 · Lisa HanDeveloper Relations

Which launcher is it? I may already have a contact there.

19 · Elena ParkPlatform Framework

It's one of the top three launchers on our store, with several million installs on Orion Lite. Every time any app is installed or updated, the system sends a broadcast. This launcher reacts by querying the full list of apps, not once, but once for each of several categories, about twenty calls in total. During the night, when dozens of apps update in a row, it generates hundreds of calls in a few minutes.

20 · Brian ShinPlatform Framework

Normally, those calls are fast, so it doesn't matter. But if they arrive while the package manager lock is held for forty seconds, every one of them grabs a binder thread and waits. Within seconds, the pool is exhausted.

21 · Lisa HanDeveloper Relations

So the launcher isn't doing anything forbidden; it's just inefficient. That matters for how I approach the developer. If I tell them their app is crashing our phones, they'll be defensive. If I tell them their app is making excessive calls and show them a better pattern, they'll usually fix it.

22 · Elena ParkPlatform Framework

Exactly. And to be fair to them, our documentation doesn't warn against this pattern. The better approach is to listen for the specific package that changed and update only that entry, instead of rebuilding everything.

Three Layers, Three Fixes

23 · Soyeon ParkSQE

So we have three layers: a nearly full device makes writes slow, the package manager holds a lock during a slow write, and an app floods the system with calls during that window. Which ones do we fix?

24 · Brian ShinPlatform Framework

The one we fully control, and the one that matters most, is the lock. The package manager shouldn't hold its main lock while writing to storage. The usual pattern is to take a snapshot of the data under the lock, release the lock, and then write the snapshot to disk. Then a slow write only delays the write, not every query.

25 · Elena ParkPlatform Framework

I checked, and the newer Android version already does exactly that. It was changed upstream about a year ago. Orion Lite's framework is based on the older version, so it doesn't have the change. Backporting it is possible, but the package manager is one of the most sensitive parts of the system. A mistake there could corrupt the package database.

26 · Yuna KwakKernel & BSP

From the storage side, there's something we can do independently. We can make the file system start background garbage collection earlier when free space is low, during idle time, so that space is already prepared when a write arrives. It doesn't eliminate slow writes, but in our tests, it cuts the worst case from forty seconds to under ten.

27 · Brian ShinPlatform Framework

Under ten seconds would be enough to avoid the watchdog in almost every case. The watchdog fires at sixty seconds, and the binder pool would recover once the lock is released.

28 · Lisa HanDeveloper Relations

And on the app side, I can contact the launcher developer next week. If they ship a fix within a month, that removes the flood for millions of users, on every device, not just ours.

Choosing the Approach

29 · Soyeon ParkSQE

Let's be concrete about risk and timing. Orion Lite's next release, 1.4.0, has its content cutoff on September 3rd, after Grace moved it. What can realistically make that?

30 · Yuna KwakKernel & BSP

The file system tuning is a configuration change plus a small kernel patch that's already upstream. I can have it ready on Monday, and the storage stress profile can validate it by Wednesday.

31 · Elena ParkPlatform Framework

The package manager backport is a different story. Even if I start today, I wouldn't want it in a release without at least two weeks of testing, including upgrade testing with real user data. That means 1.5.0 in October at the earliest.

32 · Brian ShinPlatform Framework

Is there a smaller framework change we could make for 1.4.0? For example, limiting how many binder threads a single app can occupy at once. If the launcher could use at most eight threads, the other twenty-three would stay free for the system.

33 · Elena ParkPlatform Framework

That's an interesting idea, but I'd be careful. A per-app limit changes the behavior for every app, including well-behaved ones that legitimately make parallel calls. We could easily cause slowdowns elsewhere. I'd rather not introduce that kind of global change in a maintenance release.

34 · Soyeon ParkSQE

Then the plan is: file system tuning in 1.4.0 as the immediate mitigation, the package manager fix in 1.5.0 as the real fix, and Lisa working with the launcher developer in parallel. Does anyone disagree?

35 · Brian ShinPlatform Framework

No disagreement. I'd only add that the alarm issue deserves its own look.

The Missed Alarm

36 · Brian ShinPlatform Framework

Even if the freeze becomes rare, a soft reboot at the wrong moment can still swallow an alarm. That's the part users are angriest about. Shouldn't the alarm survive a system server restart?

37 · Elena ParkPlatform Framework

It should, and normally it does. Alarms are stored persistently and rescheduled at boot. But if the restart happens within a minute of the alarm time, the alarm is rescheduled for a time that has already passed, and the current logic treats it as missed rather than firing it late.

38 · Soyeon ParkSQE

That sounds like a separate bug that's worth fixing regardless of the freeze. An alarm that's two minutes late is far better than no alarm at all.

39 · Elena ParkPlatform Framework

Agreed. If an alarm's time passed less than ten minutes ago when the system restarts, it should fire immediately. That's a small, contained change in the alarm service, and I think it can make 1.4.0.

Other Models and Atlas

40 · Brian ShinPlatform Framework

Let's check our exposure beyond Orion Lite. Orion has the same framework version, so it has the same lock problem. It's just less visible because its storage is faster. Should the file system tuning go into Orion's next build as well?

41 · Yuna KwakKernel & BSP

I'd say yes, but in October, not as an exception. Orion's September build is already locked and submitted, and the rate on Orion is low enough that a month's wait is reasonable. I'll make sure the change goes into the common kernel branch, so it reaches both products.

42 · Elena ParkPlatform Framework

For Atlas and Atlas Lite, the package manager already has the newer locking from the upstream framework, so the main risk is gone. But Atlas Lite will ship with only four gigabytes of memory in some markets, and its storage is a cost-reduced part. I'd want the same overnight update scenario in its test plan from the start.

43 · Soyeon ParkSQE

I'll pass that to Nina for the Atlas Lite test plan. It fits nicely with the memory pressure tests she's already defining.

44 · Lisa HanDeveloper Relations

And the launcher developer's fix, if they make one, helps every device at once, including the new ones. That's another reason to approach them constructively.

Detecting This Earlier

45 · Brian ShinPlatform Framework

This issue has probably existed for a long time, getting worse as devices filled up. Why did it take two weeks of field reports for us to notice?

46 · Soyeon ParkSQE

Two reasons. First, our test devices are almost never full. We reset them often, so they rarely have less than half of their storage free. Second, the freezes happen at night, when nobody is watching, and a soft reboot doesn't show up as a crash in our main dashboard. It shows up as a watchdog event, which we only review weekly.

47 · Yuna KwakKernel & BSP

Then we should keep a group of test devices deliberately filled to ninety percent or more, and leave them that way. Real users live with nearly full phones for months. Our lab devices should too.

48 · Elena ParkPlatform Framework

And watchdog restarts should be on the main dashboard, next to crashes, with the same alert thresholds. From the user's point of view, a minute-long freeze followed by a restart is worse than most crashes.

49 · Soyeon ParkSQE

Agreed on both. I'll set up a group of twenty full devices in the stress lab next week, and ask Kyle to add watchdog restarts to the main field dashboard.

50 · Brian ShinPlatform Framework

That's a cheap change with a big payoff. Thank you. Let's review the first week of data from the full devices at our next check-in.

Validation Plan

51 · Soyeon ParkSQE

For validation, I'd like to reproduce the original scenario in the lab, not just test each fix separately. We can fill test devices to ninety-five percent storage, install the same launcher, and trigger fifty app updates in a row while the device is charging with the screen off.

52 · Yuna KwakKernel & BSP

Please measure the longest package manager write in each run as well. That tells us directly whether the file system tuning is doing its job, even if the freeze doesn't happen.

53 · Elena ParkPlatform Framework

And for the alarm fix, a simple test: schedule an alarm, force a system server restart thirty seconds before it, and check that it fires within a minute of the original time.

Action Items and Closing

54 · Soyeon ParkSQE

Let me summarize. Yuna: file system garbage collection tuning, ready Monday, validated by Wednesday. Elena: the alarm catch-up fix for 1.4.0, and start the package manager backport for 1.5.0. Lisa: contact the launcher developer next week with the data and a recommended pattern. Brian: add a warning about this pattern to our developer documentation. And SQE will build the full reproduction scenario and validate everything together.

55 · Lisa HanDeveloper Relations

I'll send the developer a sample of the call pattern from the dumps, anonymized, so they can see exactly what their app is doing. I'll also offer them early access to our test devices with nearly full storage, so they can reproduce the problem themselves and verify their fix before it ships.

56 · Elena ParkPlatform Framework

That's a great idea. Developers fix things much faster when they can see the problem on their own desk.

57 · Yuna KwakKernel & BSP

I'll share the file system tuning patch with the upstream maintainers as well, along with our measurements. If they find it useful, other device makers with slower storage will benefit too.

58 · Soyeon ParkSQE

Thank you, everyone. Our next check-in is Wednesday, September 2nd, at 10 a.m. Korea time, the day before the 1.4.0 cutoff. By then, I'd like to see the reproduction results with Yuna's tuning, the alarm test, and a first reply from the launcher developer, if we have one.

59 · Brian ShinPlatform Framework

Thanks, Soyeon. This was a good example of the triage order from the tech share paying off. Three weeks ago, a dump like this would have bounced between teams for days.

02 / 한국어 번역

참석자 확인

01 · Soyeon ParkSQE

좋은 아침입니다, 여러분. 토요일에 참석해 주셔서 감사합니다. 저는 SQE 소연입니다. Orion Lite에서 2주째 시장에서 증가하고 있는 시스템 멈춤 문제가 있는데, 드디어 쓸 만한 덤프를 얻었습니다. 서드파티 앱이 관련된 것 같아서 개발자 관계팀도 초대했습니다.

02 · Elena ParkPlatform Framework

플랫폼 프레임워크팀 Elena입니다. 시스템 서버 hang은 제 일상이라 덤프를 이미 봤습니다.

03 · Brian ShinPlatform Framework

프레임워크 리드 Brian입니다. 어떤 결정을 내리든 아마 저희 팀 코드인 패키지 관리자를 건드리게 될 테니 왔습니다.

04 · Yuna KwakKernel & BSP

커널·BSP 팀 유나입니다. 소연 님이 느린 스토리지를 언급해서 파일 시스템 쪽 때문에 왔습니다.

05 · Lisa HanDeveloper Relations

개발자 관계팀 한리사입니다. 주요 앱 개발사들과의 관계를 관리하고 있어서, 그중 하나에 뭔가를 바꿔 달라고 해야 한다면 제가 연락하게 됩니다.

증상

06 · Soyeon ParkSQE

사용자들이 보고하는 내용은 이렇습니다. 보통 이른 아침에 폰이 약 1분간 완전히 멈춘 뒤, 부팅 애니메이션이 나오면서 재시작됩니다. 깨어 있는 사용자들은 알람이 울리기 직전에 이걸 알아채는 경우가 많아서 소셜 미디어에서 눈에 띄게 됐습니다. 몇몇은 알람이 울리지 않았다고 했습니다.

07 · Brian ShinPlatform Framework

멈춤이 짧더라도 알람이 울리지 않는 건 사용자에게 심각한 문제입니다. 시장 데이터는 시점에 대해 뭘 보여 주나요?

08 · Soyeon ParkSQE

이벤트의 약 70%가 현지 시각 새벽 2시에서 6시 사이에 발생하는데, 폰이 충전 중일 때 앱 스토어가 자동 업데이트를 돌리는 시간대입니다. 비율은 주당 Orion Lite 단말의 약 0.4%이고, 여유 저장 공간이 10% 미만인 단말에서 약 세 배 높습니다.

09 · Elena ParkPlatform Framework

Orion에서도 발생하는지, 아니면 Orion Lite에서만 발생하는지 알고 있나요?

10 · Soyeon ParkSQE

Orion에서도 있지만 약 8배 덜 자주 발생합니다. Orion Lite는 스토리지가 더 느리고 메모리가 적은데, 그게 중요한 것 같습니다.

덤프 분석 결과

11 · Soyeon ParkSQE

Elena, 덤프를 설명해 주시겠어요?

12 · Elena ParkPlatform Framework

네. 3주 전 기술 공유에서 유나 님이 설명한 순서를 따랐습니다. 리셋 원인은 시스템 서버 워치독입니다. 시스템 서버의 메인 스레드는 binder 응답을 기다리며 블록돼 있습니다. 시스템 서버의 binder 스레드 풀을 보니 31개 스레드가 모두 바빴습니다. 새 요청을 처리할 수 있는 스레드가 하나도 없어서, 메인 스레드의 호출을 포함한 모든 들어오는 호출이 그냥 기다렸습니다.

13 · Yuna KwakKernel & BSP

31개 스레드는 뭘 하고 있었나요?

14 · Elena ParkPlatform Framework

그중 27개가 패키지 관리자 안의 같은 락을 기다리고 있었습니다. 3개는 관련 없는 요청을 정상적으로 처리하고 있었고요. 그리고 스레드 하나가 패키지 정보를 스토리지에 쓰면서 그 락을 잡고 있었습니다. 그 쓰기는 40초 넘게 진행 중이었습니다.

15 · Brian ShinPlatform Framework

쓰기에 40초라고요? 말도 안 되네요. 패키지 정보 파일은 보통 몇 메가바이트인데요.

16 · Yuna KwakKernel & BSP

안타깝게도 거의 꽉 찬 단말에서는 전혀 말이 안 되는 게 아닙니다. 파일 시스템의 여유 공간이 아주 적으면, 새 데이터를 쓰기 전에 기존 블록을 옮겨 공간을 확보하는 가비지 컬렉션을 돌려야 합니다. Orion Lite처럼 느린 스토리지에서는 그게 수십 초 걸릴 수 있고, 쓰는 스레드는 그동안 내내 블록됩니다.

17 · Elena ParkPlatform Framework

그러면 스토리지와의 상관관계가 설명되네요. 그런데 한 가지가 더 있습니다. 대기 중인 27개 스레드는 거의 모두 같은 앱, 인기 있는 서드파티 런처를 처리하고 있었습니다. 그 앱이 앱 목록을 다시 만들려고 패키지 관리자를 반복해서 호출하고 있었습니다.

서드파티 런처

18 · Lisa HanDeveloper Relations

어떤 런처인가요? 이미 그쪽에 연락처가 있을 수도 있어요.

19 · Elena ParkPlatform Framework

저희 스토어 상위 3개 런처 중 하나로, Orion Lite에서 설치 수가 수백만입니다. 앱이 설치되거나 업데이트될 때마다 시스템이 브로드캐스트를 보냅니다. 이 런처는 거기에 반응해서 전체 앱 목록을 조회하는데, 한 번이 아니라 여러 카테고리별로 한 번씩, 총 약 20번 호출합니다. 밤사이 수십 개 앱이 연달아 업데이트되면, 몇 분 만에 수백 번의 호출을 만들어 냅니다.

20 · Brian ShinPlatform Framework

보통은 그 호출들이 빨라서 문제가 안 됩니다. 하지만 패키지 관리자 락이 40초 동안 잡혀 있을 때 들어오면, 하나하나가 binder 스레드를 붙잡고 기다립니다. 몇 초 만에 풀이 고갈되죠.

21 · Lisa HanDeveloper Relations

그러니까 런처가 금지된 걸 하는 건 아니고, 그냥 비효율적인 거네요. 그게 제가 개발사에 접근하는 방식에 중요합니다. 그쪽 앱이 저희 폰을 다운시킨다고 말하면 방어적으로 나올 겁니다. 과도한 호출을 하고 있다고 말하고 더 나은 패턴을 보여 주면, 보통 고쳐 줍니다.

22 · Elena ParkPlatform Framework

맞습니다. 그리고 그들을 위해 공정하게 말하자면, 저희 문서에는 이 패턴에 대한 경고가 없습니다. 더 나은 방법은 바뀐 특정 패키지를 확인해서 모든 걸 다시 만드는 대신 그 항목만 업데이트하는 겁니다.

세 계층, 세 가지 수정

23 · Soyeon ParkSQE

그러니까 세 계층이 있네요. 거의 꽉 찬 단말이 쓰기를 느리게 만들고, 패키지 관리자가 느린 쓰기 동안 락을 잡고 있고, 그 시간에 앱이 시스템에 호출을 쏟아붓는 거죠. 어떤 걸 고치나요?

24 · Brian ShinPlatform Framework

저희가 완전히 통제할 수 있고 가장 중요한 건 락입니다. 패키지 관리자가 스토리지에 쓰는 동안 메인 락을 잡고 있으면 안 됩니다. 일반적인 패턴은 락을 잡은 상태에서 데이터의 스냅숏을 뜨고, 락을 놓은 다음, 스냅숏을 디스크에 쓰는 겁니다. 그러면 느린 쓰기는 모든 조회가 아니라 쓰기 자체만 늦춥니다.

25 · Elena ParkPlatform Framework

확인해 봤는데, 새 안드로이드 버전은 이미 정확히 그렇게 합니다. 약 1년 전 업스트림에서 바뀌었습니다. Orion Lite의 프레임워크는 이전 버전 기반이라 그 변경이 없습니다. 백포트는 가능하지만, 패키지 관리자는 시스템에서 가장 민감한 부분 중 하나입니다. 거기서 실수하면 패키지 데이터베이스가 손상될 수 있습니다.

26 · Yuna KwakKernel & BSP

스토리지 쪽에서는 독립적으로 할 수 있는 게 있습니다. 여유 공간이 적을 때 파일 시스템이 유휴 시간에 백그라운드 가비지 컬렉션을 더 일찍 시작하게 해서, 쓰기가 들어올 때 공간이 이미 준비돼 있게 하는 거죠. 느린 쓰기를 없애지는 못하지만, 저희 테스트에서 최악의 경우를 40초에서 10초 미만으로 줄입니다.

27 · Brian ShinPlatform Framework

10초 미만이면 거의 모든 경우에 워치독을 피하기에 충분합니다. 워치독은 60초에 발동하고, 락이 풀리면 binder 풀은 회복될 테니까요.

28 · Lisa HanDeveloper Relations

그리고 앱 쪽에서는 다음 주에 런처 개발사에 연락할 수 있습니다. 그쪽이 한 달 안에 수정을 내놓으면, 저희 단말뿐 아니라 모든 기기에서 수백만 사용자의 호출 폭주가 사라집니다.

접근 방식 선택

29 · Soyeon ParkSQE

위험과 일정을 구체적으로 봅시다. Orion Lite의 다음 릴리스인 1.4.0은 Grace가 옮긴 뒤 콘텐츠 마감이 9월 3일입니다. 현실적으로 무엇이 거기에 들어갈 수 있나요?

30 · Yuna KwakKernel & BSP

파일 시스템 튜닝은 설정 변경과 이미 업스트림에 있는 작은 커널 패치입니다. 월요일까지 준비할 수 있고, 수요일까지 스토리지 스트레스 프로필로 검증할 수 있습니다.

31 · Elena ParkPlatform Framework

패키지 관리자 백포트는 다른 이야기입니다. 오늘 시작하더라도, 실제 사용자 데이터를 쓰는 업그레이드 테스트를 포함해 최소 2주는 테스트하지 않고 릴리스에 넣고 싶지 않습니다. 그러면 빨라야 10월 1.5.0입니다.

32 · Brian ShinPlatform Framework

1.4.0에 넣을 수 있는 더 작은 프레임워크 변경은 없을까요? 예를 들어 앱 하나가 한 번에 점유할 수 있는 binder 스레드 수를 제한하는 거요. 런처가 최대 8개 스레드만 쓸 수 있다면, 나머지 23개는 시스템을 위해 비어 있을 겁니다.

33 · Elena ParkPlatform Framework

흥미로운 생각이지만 조심하고 싶습니다. 앱별 제한은 정당하게 병렬 호출을 하는 잘 동작하는 앱들을 포함해 모든 앱의 동작을 바꿉니다. 다른 곳에서 쉽게 속도 저하를 일으킬 수 있습니다. 유지보수 릴리스에서 그런 전역 변경을 도입하고 싶지는 않습니다.

34 · Soyeon ParkSQE

그럼 계획은 이렇습니다. 즉각적인 완화책으로 1.4.0에 파일 시스템 튜닝, 진짜 수정으로 1.5.0에 패키지 관리자 수정, 그리고 병행해서 Lisa가 런처 개발사와 협력하는 거죠. 이견 있으신 분?

35 · Brian ShinPlatform Framework

이견 없습니다. 다만 알람 문제는 따로 살펴볼 가치가 있다고 덧붙이고 싶습니다.

울리지 않은 알람

36 · Brian ShinPlatform Framework

멈춤이 드물어지더라도, 잘못된 순간의 소프트 리부트는 여전히 알람을 삼킬 수 있습니다. 사용자들이 가장 화난 부분이 그거죠. 알람은 시스템 서버 재시작에서도 살아남아야 하지 않을까요?

37 · Elena ParkPlatform Framework

그래야 하고, 보통은 그렇습니다. 알람은 영구적으로 저장되고 부팅 시 다시 예약됩니다. 그런데 알람 시각 1분 이내에 재시작이 일어나면, 알람이 이미 지난 시각으로 다시 예약되고, 현재 로직은 그걸 늦게라도 울리는 대신 놓친 것으로 처리합니다.

38 · Soyeon ParkSQE

멈춤과 관계없이 고칠 가치가 있는 별도의 버그 같네요. 2분 늦은 알람이 아예 안 울리는 알람보다 훨씬 낫습니다.

39 · Elena ParkPlatform Framework

동의합니다. 시스템이 재시작될 때 알람 시각이 지난 지 10분이 안 됐다면, 즉시 울려야 합니다. 알람 서비스의 작고 범위가 제한된 변경이라 1.4.0에 들어갈 수 있을 것 같습니다.

다른 모델과 Atlas

40 · Brian ShinPlatform Framework

Orion Lite 외의 노출 범위도 확인합시다. Orion은 같은 프레임워크 버전이라 같은 락 문제가 있습니다. 스토리지가 더 빨라서 덜 보일 뿐이죠. 파일 시스템 튜닝을 Orion의 다음 빌드에도 넣어야 할까요?

41 · Yuna KwakKernel & BSP

그렇다고 보지만, 예외로 하지 말고 10월에 넣겠습니다. Orion 9월 빌드는 이미 확정돼 제출됐고, Orion에서의 비율은 한 달 기다려도 될 만큼 낮습니다. 변경이 공통 커널 브랜치에 들어가서 두 제품 모두에 반영되도록 하겠습니다.

42 · Elena ParkPlatform Framework

Atlas와 Atlas Lite는 패키지 관리자에 이미 업스트림 프레임워크의 새 락 방식이 들어가 있어서 주된 위험은 사라졌습니다. 하지만 Atlas Lite는 일부 시장에서 메모리 4GB로 나오고, 스토리지도 원가 절감 부품입니다. 처음부터 테스트 계획에 같은 야간 업데이트 시나리오를 넣고 싶습니다.

43 · Soyeon ParkSQE

Atlas Lite 테스트 계획을 위해 니나 님께 전달하겠습니다. 이미 정의 중인 메모리 압박 테스트와 잘 맞습니다.

44 · Lisa HanDeveloper Relations

그리고 런처 개발사가 수정을 한다면, 새 단말을 포함해 모든 기기에 한꺼번에 도움이 됩니다. 그게 그들에게 건설적으로 접근해야 할 또 하나의 이유죠.

더 일찍 감지하기

45 · Brian ShinPlatform Framework

이 이슈는 단말이 차면서 점점 나빠지며 아마 오랫동안 있었을 겁니다. 왜 2주간 시장 보고가 쌓이고 나서야 알아챘을까요?

46 · Soyeon ParkSQE

두 가지 이유입니다. 첫째, 저희 테스트 단말은 거의 꽉 차는 일이 없습니다. 자주 초기화해서 저장 공간의 절반 이상이 비어 있는 경우가 대부분입니다. 둘째, 멈춤은 아무도 보지 않는 밤에 일어나고, 소프트 리부트는 메인 대시보드에 크래시로 나타나지 않습니다. 워치독 이벤트로 나타나는데, 그건 매주만 검토합니다.

47 · Yuna KwakKernel & BSP

그럼 일부 테스트 단말은 일부러 90% 이상 채운 상태로 두고, 그대로 유지해야 합니다. 실제 사용자들은 거의 꽉 찬 폰으로 몇 달씩 지냅니다. 저희 랩 단말도 그래야 합니다.

48 · Elena ParkPlatform Framework

그리고 워치독 재시작은 크래시 옆, 메인 대시보드에 같은 알림 임계값으로 있어야 합니다. 사용자 입장에서 1분간 멈췄다가 재시작되는 건 대부분의 크래시보다 나쁩니다.

49 · Soyeon ParkSQE

둘 다 동의합니다. 다음 주에 스트레스 랩에 꽉 찬 단말 20대 그룹을 구성하고, Kyle에게 워치독 재시작을 메인 시장 대시보드에 추가해 달라고 요청하겠습니다.

50 · Brian ShinPlatform Framework

비용은 적고 효과는 큰 변화네요. 고마워요. 다음 점검 때 꽉 찬 단말 그룹의 첫 주 데이터를 검토합시다.

검증 계획

51 · Soyeon ParkSQE

검증은 각 수정을 따로 테스트하는 것만이 아니라 원래 시나리오를 랩에서 재현하고 싶습니다. 테스트 단말의 저장 공간을 95%까지 채우고, 같은 런처를 설치하고, 화면을 끄고 충전하는 동안 앱 업데이트 50개를 연달아 트리거하는 거죠.

52 · Yuna KwakKernel & BSP

각 실행에서 가장 긴 패키지 관리자 쓰기 시간도 측정해 주세요. 멈춤이 발생하지 않더라도 파일 시스템 튜닝이 제 역할을 하는지 직접 알려 줍니다.

53 · Elena ParkPlatform Framework

그리고 알람 수정은 간단한 테스트로 됩니다. 알람을 예약하고, 30초 전에 시스템 서버 재시작을 강제로 일으키고, 원래 시각에서 1분 안에 울리는지 확인하는 거죠.

실행 항목 및 마무리

54 · Soyeon ParkSQE

요약하겠습니다. 유나 님은 파일 시스템 가비지 컬렉션 튜닝을 월요일까지 준비하고 수요일까지 검증해 주세요. Elena는 1.4.0용 알람 보정 수정을 맡고, 1.5.0용 패키지 관리자 백포트를 시작해 주세요. Lisa는 다음 주에 데이터와 권장 패턴을 가지고 런처 개발사에 연락해 주세요. Brian은 개발자 문서에 이 패턴에 대한 경고를 추가해 주세요. 그리고 SQE는 전체 재현 시나리오를 만들어 모든 걸 함께 검증하겠습니다.

55 · Lisa HanDeveloper Relations

그쪽 앱이 정확히 무엇을 하고 있는지 볼 수 있도록, 덤프에서 뽑은 호출 패턴 샘플을 익명화해서 개발사에 보내겠습니다. 그리고 그쪽이 직접 문제를 재현하고 출시 전에 수정을 검증할 수 있도록, 저장 공간이 거의 꽉 찬 테스트 단말을 미리 쓸 수 있게 제안하겠습니다.

56 · Elena ParkPlatform Framework

좋은 생각이에요. 개발자들은 자기 책상에서 문제를 직접 볼 수 있을 때 훨씬 빨리 고칩니다.

57 · Yuna KwakKernel & BSP

파일 시스템 튜닝 패치도 저희 측정값과 함께 업스트림 메인테이너들에게 공유하겠습니다. 유용하다고 판단하면, 더 느린 스토리지를 쓰는 다른 제조사들도 혜택을 볼 겁니다.

58 · Soyeon ParkSQE

모두 감사합니다. 다음 점검은 1.4.0 마감 전날인 9월 2일 수요일 한국 시간 오전 10시입니다. 그때까지 유나 님 튜닝이 적용된 재현 결과, 알람 테스트, 그리고 가능하다면 런처 개발사의 첫 답변을 보고 싶습니다.

59 · Brian ShinPlatform Framework

고마워요, 소연 님. 기술 공유에서 배운 분류 순서가 효과를 본 좋은 예였네요. 3주 전이었다면 이런 덤프는 며칠 동안 팀 사이를 오갔을 겁니다.

03 / Business expressions

my daily bread

제 일상 업무 · 늘 하는 익숙한 일이라고 가볍게 말할 때

System server hangs are my daily bread, so I've already looked at the dumps.

응용 연습
Kernel crash dumps are my daily bread.

makes the call

연락하다; 결정을 내리다 · 외부 파트너에게 직접 연락하는 역할을 말할 때

I manage our relationships with the major app developers, so if we need one of them to change something, I'm the one who makes the call.

응용 연습
If we need the vendor's CTO, the program director makes the call.

seems to matter

중요한 요인으로 보인다 · 상관관계가 있어 보이는 조건을 말할 때

Orion Lite has slower storage and less memory, which seems to matter.

응용 연습
The ambient temperature seems to matter.

not one was free

단 하나도 비어 있지 않았다 · 자원이 완전히 고갈된 상태를 강조할 때

Not one was free to handle new requests, so every incoming call, including the one from the main thread, just waited.

응용 연습
All the test devices were booked; not one was free.

That's absurd

말도 안 된다 · 예상과 크게 다른 수치에 놀랄 때

That's absurd.

응용 연습
Ten minutes to boot? That's absurd.

not absurd at all, unfortunately

안타깝게도 전혀 말이 안 되는 게 아니다 · 상대가 놀란 수치가 실제로 가능함을 설명할 때

On a nearly full device, it's not absurd at all, unfortunately.

응용 연습
On an old SD card, that delay is not absurd at all, unfortunately.

in a row

연달아 · 같은 일이 연속으로 일어날 때

During the night, when dozens of apps update in a row, it generates hundreds of calls in a few minutes.

응용 연습
The test failed three times in a row.

doing anything forbidden

금지된 걸 하는 · 규칙 위반은 아니지만 문제를 일으키는 경우를 구분할 때

So the launcher isn't doing anything forbidden; it's just inefficient.

응용 연습
The app isn't doing anything forbidden, but it drains the battery.

be defensive

방어적으로 나오다 · 외부 파트너가 비난을 받으면 보일 반응을 예상할 때

If I tell them their app is crashing our phones, they'll be defensive.

응용 연습
If we lead with blame, the vendor will be defensive.

to be fair to them

그들을 위해 공정하게 말하자면 · 상대의 입장을 균형 있게 고려할 때

And to be fair to them, our documentation doesn't warn against this pattern.

응용 연습
To be fair to them, the spec changed after they shipped.

a different story

전혀 다른 이야기 · 앞의 경우와 상황이 크게 다를 때

The package manager backport is a different story.

응용 연습
Fixing the config is easy; redesigning the driver is a different story.

at the earliest

빨라야 · 가장 이른 가능 시점을 말할 때

That means 1.5.0 in October at the earliest.

응용 연습
The vendor fix will arrive next Friday at the earliest.

well-behaved ones

잘 동작하는 것들 · 규칙을 잘 지키는 앱이나 구성 요소를 구분할 때

A per-app limit changes the behavior for every app, including well-behaved ones that legitimately make parallel calls.

응용 연습
The new limit shouldn't penalize well-behaved apps.

swallow an alarm

알람을 삼키다(울리지 않게 하다) · 중요한 이벤트가 사라지는 상황을 생생하게 표현할 때

Even if the freeze becomes rare, a soft reboot at the wrong moment can still swallow an alarm.

응용 연습
A crash during the update could swallow the notification.

far better than

~보다 훨씬 나은 · 차선책이 최악보다 훨씬 나음을 강조할 때

An alarm that's two minutes late is far better than no alarm at all.

응용 연습
A slow fix is far better than no fix.

doing its job

제 역할을 하는 · 조치가 의도대로 효과를 내는지 확인할 때

That tells us directly whether the file system tuning is doing its job, even if the freeze doesn't happen.

응용 연습
The new metric shows the cache is doing its job.