【Android N 7.1.1】 ActivityManagerService 擷取cpu狀態

來源:互聯網
上載者:User

標籤:owa   disk   name   manage   style   amp   art   stc   boolean   

void updateCpuStatsNow() {        synchronized (mProcessCpuTracker) {            mProcessCpuMutexFree.set(false);            final long now = SystemClock.uptimeMillis();            boolean haveNewCpuStats = false;            if (MONITOR_CPU_USAGE &&                    mLastCpuTime.get() < (now-MONITOR_CPU_MIN_TIME)) {                mLastCpuTime.set(now);                mProcessCpuTracker.update();                if (mProcessCpuTracker.hasGoodLastStats()) {                    haveNewCpuStats = true;                    //Slog.i(TAG, mProcessCpu.printCurrentState());                    //Slog.i(TAG, "Total CPU usage: "                    //        + mProcessCpu.getTotalCpuPercent() + "%");                    // Slog the cpu usage if the property is set.                    if ("true".equals(SystemProperties.get("events.cpu"))) {                        int user = mProcessCpuTracker.getLastUserTime();                        int system = mProcessCpuTracker.getLastSystemTime();                        int iowait = mProcessCpuTracker.getLastIoWaitTime();                        int irq = mProcessCpuTracker.getLastIrqTime();                        int softIrq = mProcessCpuTracker.getLastSoftIrqTime();                        int idle = mProcessCpuTracker.getLastIdleTime();                        int total = user + system + iowait + irq + softIrq + idle;                        if (total == 0) total = 1;                        EventLog.writeEvent(EventLogTags.CPU,                                ((user+system+iowait+irq+softIrq) * 100) / total,                                (user * 100) / total,                                (system * 100) / total,                                (iowait * 100) / total,                                (irq * 100) / total,                                (softIrq * 100) / total);                    }                }            }            final BatteryStatsImpl bstats = mBatteryStatsService.getActiveStatistics();            synchronized(bstats) {                synchronized(mPidsSelfLocked) {                    if (haveNewCpuStats) {                        if (bstats.startAddingCpuLocked()) {                            int totalUTime = 0;                            int totalSTime = 0;                            final int N = mProcessCpuTracker.countStats();                            for (int i=0; i<N; i++) {                                ProcessCpuTracker.Stats st = mProcessCpuTracker.getStats(i);                                if (!st.working) {                                    continue;                                }                                ProcessRecord pr = mPidsSelfLocked.get(st.pid);                                totalUTime += st.rel_utime;                                totalSTime += st.rel_stime;                                if (pr != null) {                                    BatteryStatsImpl.Uid.Proc ps = pr.curProcBatteryStats;                                    if (ps == null || !ps.isActive()) {                                        pr.curProcBatteryStats = ps = bstats.getProcessStatsLocked(                                                pr.info.uid, pr.processName);                                    }                                    ps.addCpuTimeLocked(st.rel_utime, st.rel_stime);                                    pr.curCpuTime += st.rel_utime + st.rel_stime;                                } else {                                    BatteryStatsImpl.Uid.Proc ps = st.batteryStats;                                    if (ps == null || !ps.isActive()) {                                        st.batteryStats = ps = bstats.getProcessStatsLocked(                                                bstats.mapUid(st.uid), st.name);                                    }                                    ps.addCpuTimeLocked(st.rel_utime, st.rel_stime);                                }                            }                            final int userTime = mProcessCpuTracker.getLastUserTime();                            final int systemTime = mProcessCpuTracker.getLastSystemTime();                            final int iowaitTime = mProcessCpuTracker.getLastIoWaitTime();                            final int irqTime = mProcessCpuTracker.getLastIrqTime();                            final int softIrqTime = mProcessCpuTracker.getLastSoftIrqTime();                            final int idleTime = mProcessCpuTracker.getLastIdleTime();                            bstats.finishAddingCpuLocked(totalUTime, totalSTime, userTime,                                    systemTime, iowaitTime, irqTime, softIrqTime, idleTime);                        }                    }                }                if (mLastWriteTime < (now-BATTERY_STATS_TIME)) {                    mLastWriteTime = now;                    mBatteryStatsService.scheduleWriteToDisk();                }            }        }    }

 

【Android N 7.1.1】 ActivityManagerService 擷取cpu狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.