forked from pool/kdump
ee95057247
Improve SMP handling OBS-URL: https://build.opensuse.org/request/show/505875 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=135
117 lines
4.0 KiB
Diff
117 lines
4.0 KiB
Diff
From: Petr Tesarik <ptesarik@suse.com>
|
|
Date: Fri Jun 23 13:47:28 2017 +0200
|
|
Subject: Multithreading by default
|
|
References: bsc#1036223
|
|
Upstream: v0.8.17
|
|
Git-commit: 07534f44546e37c65a08fe7fb093255fbca6cd30
|
|
|
|
The "--num-threads" and "--split" makedumpfile options are mutually
|
|
exclusive. Before multithreading was implemented, "--split" was the
|
|
only way to use any additional CPUs. It makes more sense to use
|
|
multithreading by default.
|
|
|
|
To use "--split", the SPLIT flag can be specified.
|
|
|
|
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
|
|
|
|
---
|
|
doc/man/kdump.5.txt.in | 16 +++++++++++-----
|
|
kdumptool/savedump.cc | 17 +++++++++++++++++
|
|
kdumptool/savedump.h | 1 +
|
|
sysconfig.kdump.in | 5 +++--
|
|
4 files changed, 32 insertions(+), 7 deletions(-)
|
|
|
|
--- a/doc/man/kdump.5.txt.in
|
|
+++ b/doc/man/kdump.5.txt.in
|
|
@@ -513,11 +513,17 @@ This is a space-separated list of flags
|
|
Because SFTP and FTP are not mounted, that option has no meaning when saving
|
|
the dump to SFTP and FTP.
|
|
|
|
-*NOSPLIT*::
|
|
- Disable the _--split_ option of *makedumpfile*(8). This option is normally
|
|
- added when KDUMP_CPUS>1, because otherwise the additional CPUs are idle.
|
|
- You can specify this flag to force the use of only one dumping process,
|
|
- regardless of the value of KDUMP_CPUS.
|
|
+*SPLIT*::
|
|
+ If KDUMP_CPUS>1, use the _--split_ option of *makedumpfile*(8) instead of
|
|
+ the default _--num-threads_.
|
|
+
|
|
+*SINGLE*::
|
|
+ Specify this flag to force the use of only one CPU for dumping, regardless
|
|
+ of the value of KDUMP_CPUS.
|
|
+ It disables the _--split_ and _--num-threads_ options of *makedumpfile*(8).
|
|
+
|
|
+ For compatibility with older versions, *NOSPLIT* is an alias for *SINGLE*.
|
|
+ Its use is deprecated.
|
|
|
|
*XENALLDOMAINS*::
|
|
When dumping a Xen virtualization host, *makedumpfile*(8) is normally
|
|
--- a/kdumptool/savedump.cc
|
|
+++ b/kdumptool/savedump.cc
|
|
@@ -291,11 +291,24 @@ void SaveDump::saveDump(const RootDirURL
|
|
cpus = syscpu.numOnline();
|
|
}
|
|
if (!config->kdumptoolContainsFlag("NOSPLIT") &&
|
|
+ !config->kdumptoolContainsFlag("SINGLE") &&
|
|
cpus > 1) {
|
|
if (!useElf)
|
|
m_split = cpus;
|
|
else
|
|
cerr << "Splitting ELF dumps is not supported." << endl;
|
|
+
|
|
+ if (config->kdumptoolContainsFlag("SPLIT")) {
|
|
+ if (!useElf)
|
|
+ m_split = cpus;
|
|
+ else
|
|
+ cerr << "Splitting ELF dumps is not supported." << endl;
|
|
+ } else {
|
|
+ if (!useElf)
|
|
+ m_threads = cpus - 1;
|
|
+ else
|
|
+ cerr << "Multithreading is unavailable for ELF dumps" << endl;
|
|
+ }
|
|
}
|
|
|
|
bool excludeDomU = false;
|
|
@@ -313,6 +326,10 @@ void SaveDump::saveDump(const RootDirURL
|
|
cmdline << "makedumpfile ";
|
|
if (m_split)
|
|
cmdline << "--split ";
|
|
+ if (m_threads) {
|
|
+ SystemCPU syscpu;
|
|
+ cmdline << "--num-threads " << m_threads << " ";
|
|
+ }
|
|
cmdline << config->MAKEDUMPFILE_OPTIONS.value() << " ";
|
|
cmdline << "-d " << config->KDUMP_DUMPLEVEL.value() << " ";
|
|
if (excludeDomU)
|
|
--- a/kdumptool/savedump.h
|
|
+++ b/kdumptool/savedump.h
|
|
@@ -113,6 +113,7 @@ class SaveDump : public Subcommand {
|
|
bool m_usedDirectSave;
|
|
bool m_useMakedumpfile;
|
|
unsigned long m_split;
|
|
+ unsigned long m_threads;
|
|
std::string m_crashtime;
|
|
std::string m_crashrelease;
|
|
std::string m_rootdir;
|
|
--- a/sysconfig.kdump.in
|
|
+++ b/sysconfig.kdump.in
|
|
@@ -271,14 +271,15 @@ KDUMP_POSTSCRIPT=""
|
|
#
|
|
KDUMP_COPY_KERNEL="yes"
|
|
|
|
-## Type: string(NOSPARSE,NOSPLIT,XENALLDOMAINS)
|
|
+## Type: string(NOSPARSE,SPLIT,SINGLE,XENALLDOMAINS)
|
|
## Default: ""
|
|
## ServiceRestart: kdump
|
|
#
|
|
# Space-separated list of flags to tweak the run-time behaviour of kdumptool:
|
|
#
|
|
# NOSPARSE disable creation of sparse files.
|
|
-# NOSPLIT do not pass "--split" to makedumpfile even if KDUMP_CPUS > 1
|
|
+# SPLIT split the dump file with "makedumpfile --split"
|
|
+# SINGLE use single CPU to save the dump
|
|
# XENALLDOMAINS do not filter out Xen DomU pages
|
|
#
|
|
# See also: kdump(5).
|