Open bryancall opened 2 weeks ago
These are the results of http/2:
**http2load**
finished in 65.00s, 781381.18 req/s, 783.06MB/s
requests: 46882871 total, 46882871 started, 46882871 done, 46882871 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 46882871 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 45.88GB (49265980482) total, 424.87MB (445505292) headers (space savings 96.31%), 48.46GB (52033899520) data
min max mean sd +/- sd
time for request: 110us 52.30ms 1.13ms 654us 89.32%
time for connect: 0us 0us 0us 0us 0.00%
time to 1st byte: 0us 0us 0us 0us 0.00%
req/s : 5869.32 8612.41 7813.76 713.22 78.00%
**dstat**
You did not select any stats, using -cdngy by default.
----total-usage---- -dsk/total- ---net/lo-- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send: recv send| in out | int csw
77 18 5 0 0| 0 17M|5973B 5973B: 32M 760M| 0 0 |9306k 192k
82 18 0 0 0| 0 1305k| 545B 545B: 34M 808M| 0 0 |9652k 194k
82 18 0 0 0| 0 300k| 512B 512B: 33M 804M| 0 0 | 10M 195k
82 18 0 0 0| 0 1638B| 512B 512B: 33M 804M| 0 0 | 10M 196k
82 18 0 0 0| 0 68M| 511B 511B: 33M 802M| 0 0 |9808k 197k
82 18 0 0 0| 0 496M| 512B 512B: 33M 801M| 0 0 |9556k 195k
82 18 0 0 0| 0 3277B| 512B 512B: 34M 808M| 0 0 |9403k 197k
82 18 0 0 0| 0 1638B| 512B 512B: 33M 801M| 0 0 |9699k 195k
82 18 0 0 0| 0 1638B| 512B 512B: 33M 793M| 0 0 |9757k 194k
82 18 0 0 0| 0 3277B|1194B 1194B: 33M 791M| 0 0 |9641k 195k
82 18 0 0 0| 0 267k|1340B 1340B: 33M 788M| 0 0 |9722k 193k
83 17 0 0 0| 0 664M| 512B 512B: 33M 785M| 0 0 |9787k 192k
83 17 0 0 0| 0 824k| 512B 512B: 33M 791M| 0 0 |9589k 191k
**perf stat**
perf: 'stat-p' is not a perf-command. See 'perf --help'.
**perf report**
# Total Lost Samples: 0
#
# Samples: 2M of event 'cycles:P'
# Event count (approx.): 7767083254126
#
# Overhead Shared Object Symbol IPC [IPC Coverage]
# .......... .................... .................................................. ....................
#
3.09% [vdso] [.] __vdso_clock_gettime - -
1.56% traffic_server [.] mime_hdr_field_find(MIMEHdrImpl*, char const*, - -
1.49% traffic_server [.] hdrtoken_tokenize(char const*, int, char const - -
1.39% traffic_server [.] mime_parser_parse(MIMEParser*, HdrHeap*, MIMEH - -
1.34% traffic_server [.] VersionConverter::convert(HTTPHdr&, int, int) - -
1.16% traffic_server [.] freelist_new(_InkFreeList*) - -
0.98% libc.so.6 [.] __memmove_avx_unaligned_erms - -
0.95% traffic_server [.] XpackDynamicTable::lookup(char const*, unsigne - -
0.88% libcrypto.so [.] _aesni_ctr32_ghash_6x - -
0.83% libc.so.6 [.] __memcmp_avx2_movbe - -
0.72% traffic_server [.] HpackIndexingTable::lookup(HpackHeaderField co - -
0.69% libc.so.6 [.] __memchr_avx2 - -
0.65% traffic_server [.] HdrHeap::duplicate_str(char const*, int) - -
0.64% libc.so.6 [.] toupper - -
0.62% traffic_server [.] mime_hdr_field_attach(MIMEHdrImpl*, MIMEField* - -
0.60% traffic_server [.] huffman_decode(char*, unsigned char const*, un - -
0.60% traffic_server [.] MIMEScanner::get(swoc::_1_5_12::TextView&, swo - -
0.60% traffic_server [.] HdrHeap::allocate_str(int) - -
Changes for benchmarking and debugging the issue:
diff --git a/src/iocore/net/QUICPacketHandler.cc b/src/iocore/net/QUICPacketHandler.cc
index d336fcd57..017926cb2 100644
--- a/src/iocore/net/QUICPacketHandler.cc
+++ b/src/iocore/net/QUICPacketHandler.cc
@@ -230,7 +230,7 @@ QUICPacketHandlerIn::_recv_packet(int event, UDPPacket *udp_packet)
EThread *eth = nullptr;
if (vc == nullptr) {
- if (!quiche_version_is_supported(version)) {
+ if (0 && !quiche_version_is_supported(version)) {
Ptr<IOBufferBlock> udp_payload(new_IOBufferBlock());
udp_payload->alloc(iobuffer_size_to_index(DEFAULT_MAX_DATAGRAM_SIZE, BUFFER_SIZE_INDEX_2K));
QUICPHDebug(QUICConnectionId(scid, scid_len), QUICConnectionId(dcid, dcid_len), "Unsupported version: 0x%x", version);
diff --git a/src/iocore/net/quic/QUICStreamManager.cc b/src/iocore/net/quic/QUICStreamManager.cc
index eb241c23a..ff97164fb 100644
--- a/src/iocore/net/quic/QUICStreamManager.cc
+++ b/src/iocore/net/quic/QUICStreamManager.cc
@@ -81,11 +81,19 @@ QUICStreamManager::stream_count() const
QUICStream *
QUICStreamManager::find_stream(QUICStreamId stream_id)
{
+ int32_t count = 0;
for (QUICStream *s = this->stream_list.head; s; s = s->link.next) {
+ ++count;
if (s->id() == stream_id) {
+ if (count > 1000) {
+ Debug("bcall", "Found stream %p in stream_list. count: %d", s, count);
+ }
return s;
}
}
+ if (count > 5000) {
+ Debug("bcall", "Stream %ld not found in stream_list. count: %d", stream_id, count);
+ }
return nullptr;
}
I was just talking with Masakazu, I'll start looking into this now.
it seems aren't deleting any streams at all.
probably because we do not get the right answer from this:
I'll dig dipper.