[source] openssl: Add optimization option

LEDE Commits lede-commits at lists.infradead.org
Sat Nov 18 12:01:54 PST 2017


blogic pushed a commit to source.git, branch master:
https://git.lede-project.org/dca96b75464dd16c30b8b9574356abc71d24e99f

commit dca96b75464dd16c30b8b9574356abc71d24e99f
Author: Daniel Engberg <daniel.engberg.lists at pyret.net>
AuthorDate: Sat Nov 4 20:45:30 2017 +0100

    openssl: Add optimization option
    
    Add option to optimize for speed instead of size
    
    cmd: openssl speed md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc \
    aes-192-cbc aes-256-cbc rsa2048 dsa2048
    
    === Linksys WRT3200ACM ===
    
    Default optimization:
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
    md5              14111.49k    47147.75k   123375.02k   206937.09k   258828.97k
    sha1             14495.71k    46763.99k   116679.94k   188115.29k   228294.66k
    des cbc          22315.63k    23118.98k    23323.14k    23348.22k    23363.58k
    des ede3          8085.97k     8217.26k     8255.74k     8266.41k     8273.92k
    aes-128 cbc      48740.10k    52606.12k    54224.98k    56263.68k    54774.44k
    aes-192 cbc      43410.83k    47325.31k    48994.05k    49377.96k    48532.14k
    aes-256 cbc      39132.46k    42512.60k    43692.63k    43997.18k    44070.23k
    sha256           19987.80k    47314.69k    86119.08k   109352.28k   119466.67k
    sha512            8034.63k    32321.92k    47495.94k    65777.32k    74080.26k
                      sign    verify    sign/s verify/s
    rsa 2048 bits 0.020387s 0.000528s     49.1   1892.2
                      sign    verify    sign/s verify/s
    dsa 2048 bits 0.005920s 0.006396s    168.9    156.3
    
    Optimize for speed (-O3 instead of -Os and disable -DOPENSSL_SMALL_FOOTPRINT):
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
    md5              14655.49k    48561.79k   126953.56k   210741.93k   262430.72k
    sha1             14607.90k    47032.15k   117725.87k   188226.22k   228499.46k
    des cbc          28041.11k    29586.84k    29939.80k    30047.91k    30067.37k
    des ede3         10697.93k    10899.75k    10956.97k    10972.84k    10980.01k
    aes-128 cbc      58852.70k    65956.07k    68675.67k    69388.29k    69607.42k
    aes-192 cbc      50299.73k    56501.23k    58491.65k    59008.00k    59159.89k
    aes-256 cbc      44684.38k    47944.36k    49098.67k    49573.89k    49463.30k
    sha256           19673.53k    47248.58k    86775.04k   110053.72k   119382.02k
    sha512            8029.67k    32033.02k    47440.04k    65740.12k    74072.06k
                      sign    verify    sign/s verify/s
    rsa 2048 bits 0.019666s 0.000529s     50.8   1892.0
                      sign    verify    sign/s verify/s
    dsa 2048 bits 0.005882s 0.006450s    170.0    155.0
    
    === D-Link DIR-860L (B1) ===
    Default optimization:
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
    md5               3376.97k    11654.74k    32966.76k    60016.27k    80729.43k
    sha1              2310.95k     6024.87k    11680.32k    15273.93k    16784.07k
    des cbc           6787.21k     7014.36k     7072.49k     7088.73k     7092.48k
    des ede3          2462.47k     2499.87k     2509.48k     2511.35k     2514.75k
    aes-128 cbc      10014.28k    11018.87k    11308.99k    11381.03k    11406.20k
    aes-192 cbc       8930.35k     9675.27k     9895.97k     9954.57k     9971.92k
    aes-256 cbc       8022.81k     8624.03k     8799.60k     8843.14k     8856.07k
    sha256            2546.33k     5542.19k     9326.99k    11249.03k    11969.57k
    sha512             877.22k     3503.44k     4856.01k     6554.96k     7299.32k
                      sign    verify    sign/s verify/s
    rsa 2048 bits 0.109348s 0.003132s      9.1    319.3
                      sign    verify    sign/s verify/s
    dsa 2048 bits 0.032745s 0.037212s     30.5     26.9
    
    Optimize for speed (-O3 instead of -Os and disable -DOPENSSL_SMALL_FOOTPRINT):
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
    md5               3660.39k    12401.37k    34501.23k    62438.83k    81786.64k
    sha1              3500.20k    10730.70k    25056.19k    37715.86k    44253.13k
    des cbc           7189.75k     7545.88k     7641.90k     7665.71k     7672.18k
    des ede3          2690.64k     2734.33k     2745.24k     2748.13k     2748.81k
    aes-128 cbc      11325.29k    12731.75k    13151.34k    13259.95k    13289.55k
    aes-192 cbc       9932.36k    10997.65k    11309.84k    11389.53k    11408.92k
    aes-256 cbc       8845.13k     9677.01k     9920.30k     9980.77k     9996.42k
    sha256            3200.50k     7107.76k    12230.85k    14933.73k    15962.15k
    sha512             879.12k     3510.79k     4956.45k     6711.45k     7484.39k
                      sign    verify    sign/s verify/s
    rsa 2048 bits 0.085641s 0.002365s     11.7    422.9
                      sign    verify    sign/s verify/s
    dsa 2048 bits 0.023881s 0.026120s     41.9     38.3
    
    -O3 is considered safe for OpenSSL
    Ref: https://wiki.openssl.org/index.php/Compilation_and_Installation
    Tested hardware: Linksys WRT3200ACM / D-Link DIR-860L (B1)
    
    Signed-off-by: Daniel Engberg <daniel.engberg.lists at pyret.net>
---
 package/libs/openssl/Config.in | 5 +++++
 package/libs/openssl/Makefile  | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in
index b949d3b..96d3ba3 100644
--- a/package/libs/openssl/Config.in
+++ b/package/libs/openssl/Config.in
@@ -55,6 +55,11 @@ config OPENSSL_HARDWARE_SUPPORT
 	default n
 	prompt "Enable hardware support"
 
+config OPENSSL_OPTIMIZE_SPEED
+	bool
+	default n
+	prompt "Enable optimization for speed instead of size"
+
 endif
 
 config OPENSSL_ENGINE_CRYPTO
diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile
index b95b462..db20b7e 100644
--- a/package/libs/openssl/Makefile
+++ b/package/libs/openssl/Makefile
@@ -41,7 +41,8 @@ PKG_CONFIG_DEPENDS:= \
 	CONFIG_OPENSSL_WITH_COMPRESSION \
 	CONFIG_OPENSSL_WITH_NPN \
 	CONFIG_OPENSSL_WITH_PSK \
-	CONFIG_OPENSSL_WITH_SRP
+	CONFIG_OPENSSL_WITH_SRP \
+	CONFIG_OPENSSL_OPTIMIZE_SPEED
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -155,6 +156,10 @@ ifndef CONFIG_OPENSSL_WITH_SRP
   OPENSSL_OPTIONS += no-srp
 endif
 
+ifeq ($(CONFIG_OPENSSL_OPTIMIZE_SPEED),y)
+  TARGET_CFLAGS := $(filter-out -Os,$(TARGET_CFLAGS)) -O3
+endif
+
 ifeq ($(CONFIG_x86_64),y)
   OPENSSL_TARGET:=linux-x86_64-openwrt
   OPENSSL_MAKEFLAGS += LIBDIR=lib
@@ -185,7 +190,7 @@ define Build/Configure
 			--openssldir=/etc/ssl \
 			$(TARGET_CPPFLAGS) \
 			$(TARGET_LDFLAGS) -ldl \
-			-DOPENSSL_SMALL_FOOTPRINT \
+			$(if $(CONFIG_OPENSSL_OPTIMIZE_SPEED),,-DOPENSSL_SMALL_FOOTPRINT) \
 			$(OPENSSL_NO_CIPHERS) \
 			$(OPENSSL_OPTIONS) \
 	)



More information about the lede-commits mailing list