Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
7af6642e
Commit
7af6642e
authored
Apr 20, 2016
by
Random-Liu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use mCPU as CPU usage unit, add version in PerfData, fix memory usage bug.
parent
2be704f9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
8 deletions
+30
-8
kubelet_stats.go
test/e2e/framework/kubelet_stats.go
+1
-1
perf_util.go
test/e2e/framework/perf_util.go
+22
-7
perftype.go
test/e2e/perftype/perftype.go
+7
-0
No files found.
test/e2e/framework/kubelet_stats.go
View file @
7af6642e
...
...
@@ -669,7 +669,7 @@ func (r *ResourceMonitor) GetMasterNodeLatest(usagePerNode ResourceUsagePerNode)
nodeAvgUsage
[
c
]
=
&
ContainerResourceUsage
{
Name
:
usage
.
Name
}
}
nodeAvgUsage
[
c
]
.
CPUUsageInCores
+=
usage
.
CPUUsageInCores
nodeAvgUsage
[
c
]
.
Memory
RSSInBytes
+=
usage
.
MemoryRSS
InBytes
nodeAvgUsage
[
c
]
.
Memory
UsageInBytes
+=
usage
.
MemoryUsage
InBytes
nodeAvgUsage
[
c
]
.
MemoryWorkingSetInBytes
+=
usage
.
MemoryWorkingSetInBytes
nodeAvgUsage
[
c
]
.
MemoryRSSInBytes
+=
usage
.
MemoryRSSInBytes
}
...
...
test/e2e/framework/perf_util.go
View file @
7af6642e
...
...
@@ -25,9 +25,13 @@ import (
// TODO(random-liu): Change the tests to actually use PerfData from the begining instead of
// translating one to the other here.
// currentApiCallMetricsVersion is the current apicall performance metrics version. We should
// bump up the version each time we make incompatible change to the metrics.
const
currentApiCallMetricsVersion
=
"v1"
// ApiCallToPerfData transforms APIResponsiveness to PerfData.
func
ApiCallToPerfData
(
apicalls
APIResponsiveness
)
*
perftype
.
PerfData
{
perfData
:=
&
perftype
.
PerfData
{}
perfData
:=
&
perftype
.
PerfData
{
Version
:
currentApiCallMetricsVersion
}
for
_
,
apicall
:=
range
apicalls
.
APICalls
{
item
:=
perftype
.
DataItem
{
Data
:
map
[
string
]
float64
{
...
...
@@ -46,6 +50,10 @@ func ApiCallToPerfData(apicalls APIResponsiveness) *perftype.PerfData {
return
perfData
}
// currentKubeletPerfMetricsVersion is the current kubelet performance metrics version. We should
// bump up the version each time we make incompatible change to the metrics.
const
currentKubeletPerfMetricsVersion
=
"v1"
// ResourceUsageToPerfData transforms ResourceUsagePerNode to PerfData. Notice that this function
// only cares about memory usage, because cpu usage information will be extracted from NodesCPUSummary.
func
ResourceUsageToPerfData
(
usagePerNode
ResourceUsagePerNode
)
*
perftype
.
PerfData
{
...
...
@@ -54,7 +62,7 @@ func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfDa
for
c
,
usage
:=
range
usages
{
item
:=
perftype
.
DataItem
{
Data
:
map
[
string
]
float64
{
"memory"
:
float64
(
usage
.
Memory
RSS
InBytes
)
/
(
1024
*
1024
),
"memory"
:
float64
(
usage
.
Memory
Usage
InBytes
)
/
(
1024
*
1024
),
"workingset"
:
float64
(
usage
.
MemoryWorkingSetInBytes
)
/
(
1024
*
1024
),
"rss"
:
float64
(
usage
.
MemoryRSSInBytes
)
/
(
1024
*
1024
),
},
...
...
@@ -68,7 +76,10 @@ func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfDa
items
=
append
(
items
,
item
)
}
}
return
&
perftype
.
PerfData
{
DataItems
:
items
}
return
&
perftype
.
PerfData
{
Version
:
currentKubeletPerfMetricsVersion
,
DataItems
:
items
,
}
}
// CPUUsageToPerfData transforms NodesCPUSummary to PerfData.
...
...
@@ -78,11 +89,11 @@ func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData {
for
c
,
usage
:=
range
usages
{
data
:=
map
[
string
]
float64
{}
for
perc
,
value
:=
range
usage
{
data
[
fmt
.
Sprintf
(
"Perc%02.0f"
,
perc
*
100
)]
=
value
*
100
data
[
fmt
.
Sprintf
(
"Perc%02.0f"
,
perc
*
100
)]
=
value
*
100
0
}
item
:=
perftype
.
DataItem
{
Data
:
data
,
Unit
:
"
%
"
,
Unit
:
"
mCPU
"
,
Labels
:
map
[
string
]
string
{
"node"
:
node
,
"container"
:
c
,
...
...
@@ -92,13 +103,17 @@ func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData {
items
=
append
(
items
,
item
)
}
}
return
&
perftype
.
PerfData
{
DataItems
:
items
}
return
&
perftype
.
PerfData
{
Version
:
currentKubeletPerfMetricsVersion
,
DataItems
:
items
,
}
}
// PrintPerfData prints the perfdata in json format with PerfResultTag prefix.
// If an error occurs, nothing will be printed.
func
PrintPerfData
(
p
*
perftype
.
PerfData
)
{
// Notice that we must make sure the perftype.PerfResultEnd is in a new line.
if
str
:=
PrettyPrintJSON
(
p
);
str
!=
""
{
Logf
(
"%s
"
,
perftype
.
PerfResultTag
+
" "
+
str
)
Logf
(
"%s
%s
\n
%s"
,
perftype
.
PerfResultTag
,
str
,
perftype
.
PerfResultEnd
)
}
}
test/e2e/perftype/perftype.go
View file @
7af6642e
...
...
@@ -36,9 +36,16 @@ type DataItem struct {
// PerfData contains all data items generated in current test.
type
PerfData
struct
{
// Version is the version of the metrics. The metrics consumer could use the version
// to detect metrics version change and decide what version to support.
Version
string
`json:"version"`
DataItems
[]
DataItem
`json:"dataItems"`
}
// PerfResultTag is the prefix of generated perfdata. Analyzing tools can find the perf result
// with this tag.
const
PerfResultTag
=
"[Result:Performance]"
// PerfResultEnd is the end of generated perfdata. Analyzing tools can find the end of the perf
// result with this tag.
const
PerfResultEnd
=
"[Finish:Performance]"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment