Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
6994a3da
Commit
6994a3da
authored
Jun 21, 2015
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p: instrument P2P networking layer
parent
821e01b0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
3 deletions
+56
-3
dial.go
p2p/dial.go
+3
-1
metrics.go
p2p/metrics.go
+49
-0
server.go
p2p/server.go
+4
-2
No files found.
p2p/dial.go
View file @
6994a3da
...
...
@@ -196,7 +196,9 @@ func (t *dialTask) Do(srv *Server) {
glog
.
V
(
logger
.
Detail
)
.
Infof
(
"dial error: %v"
,
err
)
return
}
srv
.
setupConn
(
fd
,
t
.
flags
,
t
.
dest
)
mfd
:=
newMeteredConn
(
fd
,
false
)
srv
.
setupConn
(
mfd
,
t
.
flags
,
t
.
dest
)
}
func
(
t
*
dialTask
)
String
()
string
{
return
fmt
.
Sprintf
(
"%v %x %v:%d"
,
t
.
flags
,
t
.
dest
.
ID
[
:
8
],
t
.
dest
.
IP
,
t
.
dest
.
TCP
)
...
...
p2p/metrics.go
0 → 100644
View file @
6994a3da
// Contains the meters and timers used by the networking layer.
package
p2p
import
(
"net"
"github.com/rcrowley/go-metrics"
)
var
(
ingressConnectMeter
=
metrics
.
GetOrRegisterMeter
(
"p2p/InboundConnects"
,
metrics
.
DefaultRegistry
)
ingressTrafficMeter
=
metrics
.
GetOrRegisterMeter
(
"p2p/InboundTraffic"
,
metrics
.
DefaultRegistry
)
egressConnectMeter
=
metrics
.
GetOrRegisterMeter
(
"p2p/OutboundConnects"
,
metrics
.
DefaultRegistry
)
egressTrafficMeter
=
metrics
.
GetOrRegisterMeter
(
"p2p/OutboundTraffic"
,
metrics
.
DefaultRegistry
)
)
// meteredConn is a wrapper around a network TCP connection that meters both the
// inbound and outbound network traffic.
type
meteredConn
struct
{
*
net
.
TCPConn
// Network connection to wrap with metering
}
// newMeteredConn creates a new metered connection, also bumping the ingress or
// egress connection meter.
func
newMeteredConn
(
conn
net
.
Conn
,
ingress
bool
)
net
.
Conn
{
if
ingress
{
ingressConnectMeter
.
Mark
(
1
)
}
else
{
egressConnectMeter
.
Mark
(
1
)
}
return
&
meteredConn
{
conn
.
(
*
net
.
TCPConn
)}
}
// Read delegates a network read to the underlying connection, bumping the ingress
// traffic meter along the way.
func
(
c
*
meteredConn
)
Read
(
b
[]
byte
)
(
n
int
,
err
error
)
{
n
,
err
=
c
.
TCPConn
.
Read
(
b
)
ingressTrafficMeter
.
Mark
(
int64
(
n
))
return
}
// Write delegates a network write to the underlying connection, bumping the
// egress traffic meter along the way.
func
(
c
*
meteredConn
)
Write
(
b
[]
byte
)
(
n
int
,
err
error
)
{
n
,
err
=
c
.
TCPConn
.
Write
(
b
)
egressTrafficMeter
.
Mark
(
int64
(
n
))
return
}
p2p/server.go
View file @
6994a3da
...
...
@@ -548,9 +548,11 @@ func (srv *Server) listenLoop() {
if
err
!=
nil
{
return
}
glog
.
V
(
logger
.
Debug
)
.
Infof
(
"Accepted conn %v
\n
"
,
fd
.
RemoteAddr
())
mfd
:=
newMeteredConn
(
fd
,
true
)
glog
.
V
(
logger
.
Debug
)
.
Infof
(
"Accepted conn %v
\n
"
,
mfd
.
RemoteAddr
())
go
func
()
{
srv
.
setupConn
(
fd
,
inboundConn
,
nil
)
srv
.
setupConn
(
m
fd
,
inboundConn
,
nil
)
slots
<-
struct
{}{}
}()
}
...
...
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