Discussion:
[PATCH] purgatory: Change default sha256 optimization to -O2
Geoff Levand
2016-11-23 17:57:09 UTC
Permalink
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.

The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.

Signed-off-by: Geoff Levand <***@infradead.org>
---
purgatory/Makefile | 4 +---
purgatory/arch/ia64/Makefile | 4 ++++
2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/purgatory/Makefile b/purgatory/Makefile
index ca0443c..328904e 100644
--- a/purgatory/Makefile
+++ b/purgatory/Makefile
@@ -38,9 +38,7 @@ clean += $(PURGATORY_OBJS) $(PURGATORY_DEPS) $(PURGATORY)

-include $(PURGATORY_DEPS)

-# sha256.c needs to be compiled without optimization, else
-# purgatory fails to execute on ia64.
-purgatory/sha256.o: CFLAGS += -O0
+purgatory/sha256.o: CFLAGS += -O2 $($(ARCH)_PURGATORY_SHA256_CFLAGS)

purgatory/sha256.o: $(srcdir)/util_lib/sha256.c
mkdir -p $(@D)
diff --git a/purgatory/arch/ia64/Makefile b/purgatory/arch/ia64/Makefile
index 32c3d97..4a2564c 100644
--- a/purgatory/arch/ia64/Makefile
+++ b/purgatory/arch/ia64/Makefile
@@ -8,6 +8,10 @@ ia64_PURGATORY_SRCS += purgatory/arch/ia64/vga.c

ia64_PURGATORY_EXTRA_CFLAGS = -ffixed-r28

+# sha256.c needs to be compiled without optimization, else
+# purgatory fails to execute on ia64.
+ia64_PURGATORY_SHA256_CFLAGS = -O0
+
dist += purgatory/arch/ia64/Makefile $(ia64_PURGATORY_SRCS) \
purgatory/arch/ia64/io.h purgatory/arch/ia64/purgatory-ia64.h
--
2.7.4
Simon Horman
2016-11-24 07:53:55 UTC
Permalink
Post by Geoff Levand
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.
The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.
Could you give an indication of the performance improvement you expect,
e.g. on arm64?
Post by Geoff Levand
---
purgatory/Makefile | 4 +---
purgatory/arch/ia64/Makefile | 4 ++++
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/purgatory/Makefile b/purgatory/Makefile
index ca0443c..328904e 100644
--- a/purgatory/Makefile
+++ b/purgatory/Makefile
@@ -38,9 +38,7 @@ clean += $(PURGATORY_OBJS) $(PURGATORY_DEPS) $(PURGATORY)
-include $(PURGATORY_DEPS)
-# sha256.c needs to be compiled without optimization, else
-# purgatory fails to execute on ia64.
-purgatory/sha256.o: CFLAGS += -O0
+purgatory/sha256.o: CFLAGS += -O2 $($(ARCH)_PURGATORY_SHA256_CFLAGS)
purgatory/sha256.o: $(srcdir)/util_lib/sha256.c
diff --git a/purgatory/arch/ia64/Makefile b/purgatory/arch/ia64/Makefile
index 32c3d97..4a2564c 100644
--- a/purgatory/arch/ia64/Makefile
+++ b/purgatory/arch/ia64/Makefile
@@ -8,6 +8,10 @@ ia64_PURGATORY_SRCS += purgatory/arch/ia64/vga.c
ia64_PURGATORY_EXTRA_CFLAGS = -ffixed-r28
+# sha256.c needs to be compiled without optimization, else
+# purgatory fails to execute on ia64.
+ia64_PURGATORY_SHA256_CFLAGS = -O0
+
dist += purgatory/arch/ia64/Makefile $(ia64_PURGATORY_SRCS) \
purgatory/arch/ia64/io.h purgatory/arch/ia64/purgatory-ia64.h
--
2.7.4
Pratyush Anand
2016-11-28 05:44:38 UTC
Permalink
Post by Simon Horman
Post by Geoff Levand
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.
The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.
Could you give an indication of the performance improvement you expect,
e.g. on arm64?
It takes around 20 second to verify SHA in purgatory when vmlinuz
image is around 13MB and initramfs is around 30M with -O2 enables.
Otherwise, it takes more than 2 minutes.

~Pratyush
Post by Simon Horman
Post by Geoff Levand
---
purgatory/Makefile | 4 +---
purgatory/arch/ia64/Makefile | 4 ++++
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/purgatory/Makefile b/purgatory/Makefile
index ca0443c..328904e 100644
--- a/purgatory/Makefile
+++ b/purgatory/Makefile
@@ -38,9 +38,7 @@ clean += $(PURGATORY_OBJS) $(PURGATORY_DEPS) $(PURGATORY)
-include $(PURGATORY_DEPS)
-# sha256.c needs to be compiled without optimization, else
-# purgatory fails to execute on ia64.
-purgatory/sha256.o: CFLAGS += -O0
+purgatory/sha256.o: CFLAGS += -O2 $($(ARCH)_PURGATORY_SHA256_CFLAGS)
purgatory/sha256.o: $(srcdir)/util_lib/sha256.c
diff --git a/purgatory/arch/ia64/Makefile b/purgatory/arch/ia64/Makefile
index 32c3d97..4a2564c 100644
--- a/purgatory/arch/ia64/Makefile
+++ b/purgatory/arch/ia64/Makefile
@@ -8,6 +8,10 @@ ia64_PURGATORY_SRCS += purgatory/arch/ia64/vga.c
ia64_PURGATORY_EXTRA_CFLAGS = -ffixed-r28
+# sha256.c needs to be compiled without optimization, else
+# purgatory fails to execute on ia64.
+ia64_PURGATORY_SHA256_CFLAGS = -O0
+
dist += purgatory/arch/ia64/Makefile $(ia64_PURGATORY_SRCS) \
purgatory/arch/ia64/io.h purgatory/arch/ia64/purgatory-ia64.h
--
2.7.4
Simon Horman
2016-11-30 11:02:33 UTC
Permalink
Post by Pratyush Anand
Post by Simon Horman
Post by Geoff Levand
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.
The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.
Could you give an indication of the performance improvement you expect,
e.g. on arm64?
It takes around 20 second to verify SHA in purgatory when vmlinuz
image is around 13MB and initramfs is around 30M with -O2 enables.
Otherwise, it takes more than 2 minutes.
Thanks.

This patch doesn't seem to apply against the master branch.
I'm wondering if you or Geoff could:

1. Rebase the patch
2. Include some text about the performance improvement.
Something like what is above would be fine from my pov.
Geoff Levand
2016-12-01 19:09:29 UTC
Permalink
Hi Simon,
Post by Simon Horman
This patch doesn't seem to apply against the master branch.
1. Rebase the patch
2. Include some text about the performance improvement.
Something like what is above would be fine from my pov.
I have this patch based on your master at
git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git.
The problem could be the settings of my new mail client.

I'll add the comment and try a re-post.


-Geoff
Geoff Levand
2016-12-01 19:09:37 UTC
Permalink
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.

The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.

On arm64, it takes around 20 second to verify SHA in purgatory when
vmlinuz image is around 13MB and initramfs is around 30M with -O2
enabled. Otherwise, it takes more than 2 minutes.

Cc: Pratyush Anand <***@redhat.com>
Signed-off-by: Geoff Levand <***@infradead.org>
---
purgatory/Makefile | 4 +---
purgatory/arch/ia64/Makefile | 4 ++++
2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/purgatory/Makefile b/purgatory/Makefile
index ca0443c..328904e 100644
--- a/purgatory/Makefile
+++ b/purgatory/Makefile
@@ -38,9 +38,7 @@ clean += $(PURGATORY_OBJS) $(PURGATORY_DEPS) $(PURGATORY)

-include $(PURGATORY_DEPS)

-# sha256.c needs to be compiled without optimization, else
-# purgatory fails to execute on ia64.
-purgatory/sha256.o: CFLAGS += -O0
+purgatory/sha256.o: CFLAGS += -O2 $($(ARCH)_PURGATORY_SHA256_CFLAGS)

purgatory/sha256.o: $(srcdir)/util_lib/sha256.c
mkdir -p $(@D)
diff --git a/purgatory/arch/ia64/Makefile b/purgatory/arch/ia64/Makefile
index 32c3d97..4a2564c 100644
--- a/purgatory/arch/ia64/Makefile
+++ b/purgatory/arch/ia64/Makefile
@@ -8,6 +8,10 @@ ia64_PURGATORY_SRCS += purgatory/arch/ia64/vga.c

ia64_PURGATORY_EXTRA_CFLAGS = -ffixed-r28

+# sha256.c needs to be compiled without optimization, else
+# purgatory fails to execute on ia64.
+ia64_PURGATORY_SHA256_CFLAGS = -O0
+
dist += purgatory/arch/ia64/Makefile $(ia64_PURGATORY_SRCS) \
purgatory/arch/ia64/io.h purgatory/arch/ia64/purgatory-ia64.h
--
2.9.3
Simon Horman
2016-12-02 08:21:58 UTC
Permalink
Post by Geoff Levand
Change the default purgatory sha256 code optimization from -O0 to -O2, and add a
new arch specific makefile variable $(ARCH)_PURGATORY_SHA256_CFLAGS which can
over ride this default. Set ia64_PURGATORY_SHA256_CFLAGS to -O0 to retain the
previous optimization level for ia64.
The purgatory sha256 code needs the be built with -O0 for the ia64
architecture. Currently this code is built with -O0 for all architectures,
which slows down the calculations for architectures which could otherwise
use -O2.
On arm64, it takes around 20 second to verify SHA in purgatory when
vmlinuz image is around 13MB and initramfs is around 30M with -O2
enabled. Otherwise, it takes more than 2 minutes.
Thanks, applied.

Loading...