Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
9cf12b4b
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9cf12b4b
编写于
7月 05, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add codes about gc and memory pool.
上级
f1dec889
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
254 addition
and
20 deletion
+254
-20
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java
...in/java/org/skywalking/apm/agent/core/jvm/JVMService.java
+21
-7
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCMetricAccessor.java
...rg/skywalking/apm/agent/core/jvm/gc/GCMetricAccessor.java
+11
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCModule.java
...n/java/org/skywalking/apm/agent/core/jvm/gc/GCModule.java
+47
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCProvider.java
...java/org/skywalking/apm/agent/core/jvm/gc/GCProvider.java
+48
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
...rg/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
+21
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/UnknowGC.java
...n/java/org/skywalking/apm/agent/core/jvm/gc/UnknowGC.java
+19
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java
...ing/apm/agent/core/jvm/memorypool/CMSCollectorModule.java
+37
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java
...king/apm/agent/core/jvm/memorypool/G1CollectorModule.java
+37
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java
...lking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java
+9
-9
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolProvider.java
...ing/apm/agent/core/jvm/memorypool/MemoryPoolProvider.java
+2
-2
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java
...pm/agent/core/jvm/memorypool/ParallelCollectorModule.java
+1
-1
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/UnknownMemoryPool.java
...king/apm/agent/core/jvm/memorypool/UnknownMemoryPool.java
+1
-1
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java
浏览文件 @
9cf12b4b
...
...
@@ -2,6 +2,7 @@ package org.skywalking.apm.agent.core.jvm;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ScheduledFuture
;
...
...
@@ -10,14 +11,19 @@ import org.skywalking.apm.agent.core.boot.BootService;
import
org.skywalking.apm.agent.core.jvm.cpu.CPUProvider
;
import
org.skywalking.apm.agent.core.jvm.memory.MemoryProvider
;
import
org.skywalking.apm.agent.core.jvm.memorypool.MemoryPoolProvider
;
import
org.skywalking.apm.logging.ILog
;
import
org.skywalking.apm.logging.LogManager
;
import
org.skywalking.apm.network.proto.JVMMetric
;
import
org.skywalking.apm.network.proto.MemoryPool
;
/**
* @author wusheng
*/
public
class
JVMService
implements
BootService
,
Runnable
{
private
static
ILog
logger
=
LogManager
.
getLogger
(
JVMService
.
class
);
private
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"ss"
);
private
volatile
ScheduledFuture
<?>
scheduledFuture
;
private
volatile
int
lastSeconds
=
-
1
;
@Override
public
void
beforeBoot
()
throws
Throwable
{
...
...
@@ -41,13 +47,21 @@ public class JVMService implements BootService, Runnable {
long
currentTimeMillis
=
System
.
currentTimeMillis
();
Date
day
=
new
Date
(
currentTimeMillis
);
String
second
=
sdf
.
format
(
day
);
if
(
Integer
.
parseInt
(
second
)
%
15
==
0
)
{
JVMMetric
.
Builder
JVMBuilder
=
JVMMetric
.
newBuilder
();
JVMBuilder
.
setTime
(
currentTimeMillis
);
JVMBuilder
.
setCpu
(
CPUProvider
.
INSTANCE
.
getCpuMetric
());
JVMBuilder
.
addAllMemory
(
MemoryProvider
.
INSTANCE
.
getMemoryMetricList
());
JVMBuilder
.
addAllMemoryPool
(
MemoryPoolProvider
.
INSTANCE
.
getMemoryPoolMetricList
());
int
secondInt
=
Integer
.
parseInt
(
second
);
if
(
secondInt
%
15
==
0
&&
secondInt
!=
lastSeconds
)
{
lastSeconds
=
secondInt
;
try
{
JVMMetric
.
Builder
JVMBuilder
=
JVMMetric
.
newBuilder
();
JVMBuilder
.
setTime
(
currentTimeMillis
);
JVMBuilder
.
setCpu
(
CPUProvider
.
INSTANCE
.
getCpuMetric
());
JVMBuilder
.
addAllMemory
(
MemoryProvider
.
INSTANCE
.
getMemoryMetricList
());
List
<
MemoryPool
>
memoryPoolMetricList
=
MemoryPoolProvider
.
INSTANCE
.
getMemoryPoolMetricList
();
if
(
memoryPoolMetricList
.
size
()
>
0
)
{
JVMBuilder
.
addAllMemoryPool
(
memoryPoolMetricList
);
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
,
"Collect JVM info fail."
);
}
}
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCMetricAccessor.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.gc
;
import
java.util.List
;
import
org.skywalking.apm.network.proto.GC
;
/**
* @author wusheng
*/
public
interface
GCMetricAccessor
{
List
<
GC
>
getGCList
();
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCModule.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.gc
;
import
java.lang.management.GarbageCollectorMXBean
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.skywalking.apm.network.proto.GC
;
import
org.skywalking.apm.network.proto.GCPhrase
;
/**
* @author wusheng
*/
public
abstract
class
GCModule
implements
GCMetricAccessor
{
private
List
<
GarbageCollectorMXBean
>
beans
;
public
GCModule
(
List
<
GarbageCollectorMXBean
>
beans
)
{
this
.
beans
=
beans
;
}
@Override
public
List
<
GC
>
getGCList
()
{
List
<
GC
>
gcList
=
new
LinkedList
<
GC
>();
for
(
GarbageCollectorMXBean
bean
:
beans
)
{
String
name
=
bean
.
getName
();
GCPhrase
phrase
;
if
(
name
.
equals
(
getNewGCName
()))
{
phrase
=
GCPhrase
.
NEW
;
}
else
if
(
name
.
equals
(
getOldGCName
()))
{
phrase
=
GCPhrase
.
OLD
;
}
else
{
continue
;
}
gcList
.
add
(
GC
.
newBuilder
().
setPhrase
(
phrase
)
.
setCount
(
bean
.
getCollectionCount
())
.
setTime
(
bean
.
getCollectionTime
())
.
build
()
);
}
return
gcList
;
}
protected
abstract
String
getOldGCName
();
protected
abstract
String
getNewGCName
();
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/GCProvider.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.gc
;
import
java.lang.management.GarbageCollectorMXBean
;
import
java.lang.management.ManagementFactory
;
import
java.util.List
;
import
org.skywalking.apm.network.proto.GC
;
/**
* @author wusheng
*/
public
enum
GCProvider
{
INSTANCE
;
private
GCMetricAccessor
metricAccessor
;
private
List
<
GarbageCollectorMXBean
>
beans
;
GCProvider
()
{
beans
=
ManagementFactory
.
getGarbageCollectorMXBeans
();
for
(
GarbageCollectorMXBean
bean
:
beans
)
{
String
name
=
bean
.
getName
();
GCMetricAccessor
accessor
=
findByBeanName
(
name
);
if
(
accessor
!=
null
)
{
metricAccessor
=
accessor
;
break
;
}
}
this
.
metricAccessor
=
new
UnknowGC
();
}
public
List
<
GC
>
getGCList
()
{
return
metricAccessor
.
getGCList
();
}
private
GCMetricAccessor
findByBeanName
(
String
name
)
{
if
(
name
.
indexOf
(
"PS"
)
>
-
1
)
{
//Parallel (Old) collector ( -XX:+UseParallelOldGC )
}
else
if
(
name
.
indexOf
(
"ConcurrentMarkSweep"
)
>
-
1
)
{
// CMS collector ( -XX:+UseConcMarkSweepGC )
}
else
if
(
name
.
indexOf
(
"G1"
)
>
-
1
)
{
// G1 collector ( -XX:+UseG1GC )
}
else
if
(
name
.
equals
(
"MarkSweepCompact"
))
{
// Serial collector ( -XX:+UseSerialGC )
}
else
{
// Unknown
return
null
;
}
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/ParallelGCModule.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.gc
;
import
java.lang.management.GarbageCollectorMXBean
;
import
java.util.List
;
/**
* @author wusheng
*/
public
class
ParallelGCModule
extends
GCModule
{
public
ParallelGCModule
(
List
<
GarbageCollectorMXBean
>
beans
)
{
super
(
beans
);
}
@Override
protected
String
getOldGCName
()
{
return
"PS MarkSweep"
;
}
@Override
protected
String
getNewGCName
()
{
return
"PS Scavenge"
;
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/gc/UnknowGC.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.gc
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.skywalking.apm.network.proto.GC
;
import
org.skywalking.apm.network.proto.GCPhrase
;
/**
* @author wusheng
*/
public
class
UnknowGC
implements
GCMetricAccessor
{
@Override
public
List
<
GC
>
getGCList
()
{
List
<
GC
>
gcList
=
new
LinkedList
<
GC
>();
gcList
.
add
(
GC
.
newBuilder
().
setPhrase
(
GCPhrase
.
NEW
).
build
());
gcList
.
add
(
GC
.
newBuilder
().
setPhrase
(
GCPhrase
.
OLD
).
build
());
return
gcList
;
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.memorypool
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.util.List
;
/**
* @author wusheng
*/
public
class
CMSCollectorModule
extends
MemoryPoolModule
{
public
CMSCollectorModule
(
List
<
MemoryPoolMXBean
>
beans
)
{
super
(
beans
);
}
@Override
protected
String
getPermName
()
{
return
"CMS Perm Gen"
;
}
@Override
protected
String
getCodeCacheName
()
{
return
"Code Cache"
;
}
@Override
protected
String
getEdenName
()
{
return
"Par Eden Space"
;
}
@Override
protected
String
getOldName
()
{
return
"CMS Old Gen"
;
}
@Override
protected
String
getSurvivorName
()
{
return
"Par Survivor Space"
;
}
@Override
protected
String
getMetaspaceName
()
{
return
"Metaspace"
;
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java
0 → 100644
浏览文件 @
9cf12b4b
package
org.skywalking.apm.agent.core.jvm.memorypool
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.util.List
;
/**
* @author wusheng
*/
public
class
G1CollectorModule
extends
MemoryPoolModule
{
public
G1CollectorModule
(
List
<
MemoryPoolMXBean
>
beans
)
{
super
(
beans
);
}
@Override
protected
String
getPermName
()
{
return
"G1 Perm Gen"
;
}
@Override
protected
String
getCodeCacheName
()
{
return
"Code Cache"
;
}
@Override
protected
String
getEdenName
()
{
return
"G1 Eden Space"
;
}
@Override
protected
String
getOldName
()
{
return
"G1 Old Gen"
;
}
@Override
protected
String
getSurvivorName
()
{
return
"G1 Survivor Space"
;
}
@Override
protected
String
getMetaspaceName
()
{
return
"Metaspace"
;
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java
浏览文件 @
9cf12b4b
...
...
@@ -35,17 +35,17 @@ public abstract class MemoryPoolModule implements MemoryPoolMetricAccessor {
type
=
PoolType
.
METASPACE_USAGE
;
}
else
if
(
name
.
equals
(
getPermName
()))
{
type
=
PoolType
.
PERMGEN_USAGE
;
}
else
{
continue
;
}
if
(
type
!=
null
)
{
MemoryUsage
usage
=
bean
.
getUsage
();
poolList
.
add
(
MemoryPool
.
newBuilder
().
setType
(
type
)
.
setInit
(
usage
.
getInit
())
.
setMax
(
usage
.
getMax
())
.
setCommited
(
usage
.
getCommitted
())
.
setUsed
(
usage
.
getUsed
())
.
build
());
}
MemoryUsage
usage
=
bean
.
getUsage
();
poolList
.
add
(
MemoryPool
.
newBuilder
().
setType
(
type
)
.
setInit
(
usage
.
getInit
())
.
setMax
(
usage
.
getMax
())
.
setCommited
(
usage
.
getCommitted
())
.
setUsed
(
usage
.
getUsed
())
.
build
());
}
return
poolList
;
}
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolProvider.java
浏览文件 @
9cf12b4b
...
...
@@ -39,10 +39,10 @@ public enum MemoryPoolProvider {
return
new
ParallelCollectorModule
(
beans
);
}
else
if
(
name
.
indexOf
(
"CMS"
)
>
-
1
)
{
// CMS collector ( -XX:+UseConcMarkSweepGC )
return
n
ull
;
return
n
ew
CMSCollectorModule
(
beans
)
;
}
else
if
(
name
.
indexOf
(
"G1"
)
>
-
1
)
{
// G1 collector ( -XX:+UseG1GC )
return
n
ull
;
return
n
ew
G1CollectorModule
(
beans
)
;
}
else
if
(
name
.
equals
(
"Survivor Space"
))
{
// Serial collector ( -XX:+UseSerialGC )
return
new
SerialCollectorModule
(
beans
);
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java
浏览文件 @
9cf12b4b
...
...
@@ -6,7 +6,7 @@ import java.util.List;
/**
* @author wusheng
*/
public
class
ParallelCollectorModule
extends
MemoryPoolModule
{
public
class
ParallelCollectorModule
extends
MemoryPoolModule
{
public
ParallelCollectorModule
(
List
<
MemoryPoolMXBean
>
beans
)
{
super
(
beans
);
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/UnknownMemoryPool.java
浏览文件 @
9cf12b4b
...
...
@@ -18,6 +18,6 @@ public class UnknownMemoryPool implements MemoryPoolMetricAccessor {
poolList
.
add
(
MemoryPool
.
newBuilder
().
setType
(
PoolType
.
SURVIVOR_USAGE
).
build
());
poolList
.
add
(
MemoryPool
.
newBuilder
().
setType
(
PoolType
.
PERMGEN_USAGE
).
build
());
poolList
.
add
(
MemoryPool
.
newBuilder
().
setType
(
PoolType
.
METASPACE_USAGE
).
build
());
return
poolList
;
return
new
LinkedList
<
MemoryPool
>()
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录