Storm4

1 package storm.scheduler;
 2
 3 import java.lang.management.ManagementFactory;
 4 import java.lang.management.ThreadMXBean;
 5 import java.util.HashMap;
 6 import java.util.Map;
 7 import java.util.Set;
 8
 9 import cpuinfo.CPUInfo;
10
11 /**
12  * 负载监视器
13  * @author wxweven
14  * @version 1.0
15  * @email wxweven@qq.com
16  * @blog http://wxweven.com
17  * @Copyright: Copyright (c) wxweven 2009 - 2016
18  */
19 public class LoadMonitor {
20
21     private static final int SECS_TO_NANOSECS = 1000000000;
22     private static LoadMonitor instance = null;
23     private final long cpuSpeed; // Hz
24     Map loadHistory;
25
26     public static LoadMonitor getInstance() {
27         if (instance == null) {
28             instance = new LoadMonitor();
29         }
30         return instance;
31     }
32
33     private LoadMonitor() {
34         cpuSpeed = CPUInfo.getInstance().getCoreInfo(0).getSpeed();
35     }
36
37     public Map getLoadInfo(Set threadIds) {
38         // get current load
39         Map currentLoadInfo = new HashMap();
40         ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
41         for (long id : threadIds) {
42             currentLoadInfo.put(id, threadBean.getThreadCpuTime(id));
43         }
44
45         // compute difference wrt history
46         Map loadInfo = new HashMap();
47         for (long id : threadIds) {
48             // Long oldObj = (loadHistory != null)?loadHistory.get(id):0;
49             // long old = (oldObj != null)?oldObj.longValue():0;
50             long old = 0;
51             if (loadHistory != null && loadHistory.get(id) != null) {
52                 old = loadHistory.get(id);
53             }
54             double deltaTime = (double)(currentLoadInfo.get(id) - old) / SECS_TO_NANOSECS; // sec
55             loadInfo.put(id, (long)(deltaTime * cpuSpeed));
56         }
57
58         // replace history with current
59         loadHistory = currentLoadInfo;
60
61         return loadInfo;
62     }
63 }

Original: https://www.cnblogs.com/wxweven/p/5517194.html
Author: wxweven
Title: Storm4

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592535/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球