What did exist before? How does it work? What are the findings? What is the Conclusion?
Measuring Performance on OpenBSD
Alexander Bluhm
bluhm@openbsd.org
Measuring Performance on OpenBSD Alexander Bluhm bluhm@openbsd.org - - PowerPoint PPT Presentation
What did exist before? How does it work? What are the findings? What is the Conclusion? Measuring Performance on OpenBSD Alexander Bluhm bluhm@openbsd.org EuroBSDCon, September 2019 What did exist before? How does it work? What are the
What did exist before? How does it work? What are the findings? What is the Conclusion?
bluhm@openbsd.org
What did exist before? How does it work? What are the findings? What is the Conclusion?
1
2
3
4
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
1
2
3
4
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2017-11-01 2017-12-01 2018-01-01 2018-02-01 2018-03-01 bits/sec Checkout (date) TCP Performance A B C D E F G H I J
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
1
2
3
4
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2017-12-28 2017-12-30 2018-01-01 2018-01-03 2018-01-05 2018-01-07 2018-01-09 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
3 × 109 3.1 × 109 3.2 × 109 3.3 × 109 3.4 × 109 3.5 × 109 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-01 2019-08-02 bits/sec Checkout (date) TCP Performance
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2018-10-12 2018-10-14 2018-10-16 2018-10-18 2018-10-20 2018-10-22 2018-10-24 bits/sec Checkout (date) TCP Performance Y Z ab c
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2017-11-01 2017-12-01 2018-01-01 2018-02-01 2018-03-01 bits/sec Checkout (date) TCP Performance A B C D E F G H I J
What did exist before? How does it work? What are the findings? What is the Conclusion?
100 200 300 400 500 2017-11-01 2017-12-01 2018-01-01 2018-02-01 2018-03-01 sec Checkout (date) MAKE Performance A B C D E F G H I J
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 2018-09-01 2018-10-01 bits/sec Checkout (date) TCP Performance K L M N O PQ RS TU V W X Y
What did exist before? How does it work? What are the findings? What is the Conclusion?
100 200 300 400 500 2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 2018-09-01 2018-10-01 sec Checkout (date) MAKE Performance KL M N O PQ RS TU V W X Y
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2018-11-01 2018-12-01 2019-01-01 2019-02-01 2019-03-01 2019-04-01 bits/sec Checkout (date) TCP Performance Y Z a bc d e f g h i j k l
What did exist before? How does it work? What are the findings? What is the Conclusion?
100 200 300 400 500 2018-11-01 2018-12-01 2019-01-01 2019-02-01 2019-03-01 2019-04-01 sec Checkout (date) MAKE Performance Y Z a bc d e f g h i j k l
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2.5 × 109 3 × 109 3.5 × 109 4 × 109 4.5 × 109 2019-05-01 2019-06-01 2019-07-01 2019-08-01 2019-09-01 bits/sec Checkout (date) TCP Performance m
What did exist before? How does it work? What are the findings? What is the Conclusion?
created created 2019-04-20T18:30:24Z begin begin 2019-04-16T00:00:00Z end end 2019-04-17T00:00:00Z path path src/sys commits commits 8 date date 2019-04-16T04:04:19Z author author dlg files files src/sys/net/if.c log diff annotate src/sys/net/if_var.h log diff annotate src/sys/net/ifq.c log diff annotate src/sys/net/ifq.h log diff annotate message message have another go at tx mitigation the idea is to call the hardware transmit routine less since in a lot of cases posting a producer ring update to the chip is (very)
packet, hence calling this tx mitigation. this diff defers the call to the transmit routine to a network taskq, or until a backlog of packets has built up. dragonflybsd uses 16 as the size of it's backlog, so i'm copying them for now. i've tried this before, but previous versions caused deadlocks. i discovered that the deadlocks in the previous version was from ifq_barrier calling taskq_barrier against the nettq. interfaces generally hold NET_LOCK while calling ifq_barrier, but the tq might already be waiting for the lock we hold. this version just doesnt have ifq_barrier call taskq_barrier. it instead relies on the IFF_RUNNING flag and normal ifq serialiser barrier to guarantee the start routine wont be called when an interface is going down. the taskq_barrier is only used during interface destruction to make sure the task struct wont get used in the future, which is already done without the NET_LOCK being held. tx mitigation provides a nice performanace bump in some setups. up to 25% in some cases. tested by tb@ and hrvoje popovski (who's running this in production).
date date 2019-04-16T09:40:21Z author author dlg files files src/sys/dev/pci/if_myx.c log diff annotate message message make sff page reads work on little endian archs too. like amd64. some modules seem to need more time when waiting for bytes while here. hrvoje popovski hit the endian issue date date 2019-04-16T11:42:56Z
What did exist before? How does it work? What are the findings? What is the Conclusion?
5 × 108 1 × 109 1.5 × 109 2 × 109 2019-05-01 2019-06-01 2019-07-01 2019-08-01 2019-09-01 bits/sec Checkout (date) UDP Performance m
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
1
2
3
4
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?
What did exist before? How does it work? What are the findings? What is the Conclusion?