ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【性能案例】振动服务死锁导致太鼓の達人游戏卡顿

【性能案例】振动服务死锁导致太鼓の達人游戏卡顿 一、案例背景应用名:太鼓の達人(Rhythm Connect)应用包名:com.linecorp.LGTAIKO应用版本:1.10.1应用来源:Google Play for Japan问题描述:日本用户反馈在玩「太鼓の達人」这款音乐游戏时,每一局都会发生中度卡顿及掉帧。「太鼓の達人」是一款音乐节奏游戏,用户需要分别单手点击、双手点击屏幕的不同位置来跟随音乐节奏触发不同的效果。经过研发本地复现故障发现,只有在连续使用双手同时点击屏幕触发游戏效果时才会触发卡顿。并且该现象只存在于当前项目,在Pixel和竞品上均未复现,可以基本排除三方应用的问题。二、问题分析由于日本试用用户仅提供了故障视频而未提供日志和Trace文件,于是研发本地复现故障并抓取了Trace文件和日志。Trace中的报错信息:monitor contention with owner Thread-8 (2770) at void com.android.server.vibrator.VibratorManagerService$VibrationThreadCallbacks.onVibrationThreadReleased(long) (VibratorManagerService.java:1411) waiters=0 blocking from com.android.server.vibrator.HalVibration com.android.server.vibrator.VibratorManagerService.vibrateInternal(int, int, java.lang.String, android.os.CombinedVibration, android.os.VibrationAttributes, java.lang.String, android.os.IBinder) (VibratorManagerService.java:424)通过分析Trace文件发现:①「太鼓の達人」在连续使用双手同时点击屏幕触发游戏效果时,存在多处500ms的掉帧区间。掉帧是由于游戏渲染线程UnityMain被阻塞,导致游戏在长达500ms的时间段内没有渲染任何帧,进而造成游戏出现卡顿。通过分析掉帧区间发现com.linecorp.LGTAIKO 7952游戏进程中的UnityMain 8027游戏渲染线程,在该区间内通过Binder与sys
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进