mirror of
https://github.com/prometheus/statsd_exporter.git
synced 2024-11-25 16:51:00 +00:00
avoid making copies of slices since we need to minimize the time spent in packet read in order not to drop packets
Signed-off-by: kullanici0606 <yakup.turgut@btk.gov.tr>
This commit is contained in:
parent
b0c6d983e1
commit
aaaf26c074
2 changed files with 6 additions and 3 deletions
|
@ -65,6 +65,7 @@ func benchmarkUDPListener(times int, b *testing.B) {
|
||||||
|
|
||||||
// there are more events than input lines, need bigger buffer
|
// there are more events than input lines, need bigger buffer
|
||||||
events := make(chan event.Events, len(bytesInput)*times*2)
|
events := make(chan event.Events, len(bytesInput)*times*2)
|
||||||
|
udpChan := make(chan []byte, len(bytesInput)*times*2)
|
||||||
|
|
||||||
l := listener.StatsDUDPListener{
|
l := listener.StatsDUDPListener{
|
||||||
EventHandler: &event.UnbufferedEventHandler{C: events},
|
EventHandler: &event.UnbufferedEventHandler{C: events},
|
||||||
|
@ -74,6 +75,7 @@ func benchmarkUDPListener(times int, b *testing.B) {
|
||||||
LinesReceived: linesReceived,
|
LinesReceived: linesReceived,
|
||||||
SamplesReceived: samplesReceived,
|
SamplesReceived: samplesReceived,
|
||||||
TagsReceived: tagsReceived,
|
TagsReceived: tagsReceived,
|
||||||
|
UdpPacketQueue: udpChan,
|
||||||
}
|
}
|
||||||
|
|
||||||
// resume benchmark timer
|
// resume benchmark timer
|
||||||
|
|
|
@ -66,13 +66,14 @@ func (l *StatsDUDPListener) Listen() {
|
||||||
level.Error(l.Logger).Log("error", err)
|
level.Error(l.Logger).Log("error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
l.EnqueueUdpPacket(buf[0:n])
|
// avoid making copies of slices since we need to minimize the time spent here in order not to drop packets
|
||||||
|
l.EnqueueUdpPacket(buf, n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *StatsDUDPListener) EnqueueUdpPacket(packet []byte) {
|
func (l *StatsDUDPListener) EnqueueUdpPacket(packet []byte, n int) {
|
||||||
l.UDPPackets.Inc()
|
l.UDPPackets.Inc()
|
||||||
packetCopy := make([]byte, len(packet))
|
packetCopy := make([]byte, n)
|
||||||
copy(packetCopy, packet)
|
copy(packetCopy, packet)
|
||||||
l.UdpPacketQueue <- packetCopy
|
l.UdpPacketQueue <- packetCopy
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue