saptune(8)
πΈ saptune(8) β like, the whole vibe πΈ
okay bestie, buckle up π
this is saptune(8), and it is the manual page for saptune β Comprehensive system optimization management for SAP solutions (Version 3). yes, capital C, capital S, capital O β it's giving main character energy and honestly? deserved π
β οΈ ATTENTION: if you're still on version 1 of saptune, it's literally time to migrate to saptune version 3. please go read saptune-migrate(7). not a suggestion, a lifestyle change π«Ά
β¨ SYNOPSIS β¨
every single invocation shape, served fresh, no cap:
saptune [--format FORMAT] [--force-color] [--fun] service ( start | stop | restart | takeover | enable | disable | enablestart | disablestop | status [--non-compliance-check] )
saptune [--format FORMAT] [--force-color] [--fun] note ( list | verify | revertall | enabled | applied )
saptune [--format FORMAT] [--force-color] [--fun] note ( apply | customise | create | edit | revert | show | delete ) NOTEID
saptune [--format FORMAT] [--force-color] [--fun] note refresh [NOTEID|applied] ATTENTION: experimental
saptune [--format FORMAT] [--force-color] [--fun] note verify [--colorscheme SCHEME] [--show-non-compliant] [NOTEID|applied]
saptune [--format FORMAT] [--force-color] [--fun] note rename NOTEID NEWNOTEID
saptune [--format FORMAT] [--force-color] [--fun] solution ( list | verify | enabled | applied )
saptune [--format FORMAT] [--force-color] [--fun] solution ( apply | customise | create | edit | revert | show | delete ) SOLUTIONNAME
saptune [--format FORMAT] [--force-color] [--fun] solution change [--force] SOLUTIONNAME
saptune [--format FORMAT] [--force-color] [--fun] solution verify [--colorscheme SCHEME] [--show-non-compliant] [SOLUTIONNAME]
saptune [--format FORMAT] [--force-color] [--fun] solution rename SOLUTIONNAME NEWSOLUTIONNAME
saptune [--format FORMAT] [--force-color] [--fun] staging ( status | enable | disable | is-enabled | list )
saptune [--format FORMAT] [--force-color] [--fun] staging ( analysis | diff ) [ ( NOTEID | SOLUTIONNAME.sol )... | all ]
saptune [--format FORMAT] [--force-color] [--fun] staging release [--force|--dry-run] [ ( NOTEID | SOLUTIONNAME.sol )... | all ]
saptune [--format FORMAT] [--force-color] [--fun] configure ( COLOR_SCHEME | SKIP_SYSCTL_FILES | IGNORE_RELOAD | DEBUG | TrentoASDP ) Value
saptune [--format FORMAT] [--force-color] [--fun] configure ( reset | show )
saptune [--format FORMAT] [--force-color] [--fun] verify applied
saptune [--format FORMAT] [--force-color] [--fun] refresh applied ATTENTION: experimental
saptune [--format FORMAT] [--force-color] [--fun] revert all
saptune [--format FORMAT] [--force-color] [--fun] check
saptune [--format FORMAT] [--force-color] [--fun] status [--non-compliance-check]
saptune [--format FORMAT] [--force-color] [--fun] version
saptune [--format FORMAT] [--force-color] [--fun] help
π DESCRIPTION π
so, what is saptune? it's the girlboss that automates all the configuration recommendations from SAP and SUSE so you can actually run an SAP application on SLES for SAP π those configuration recommendations are normally called SAP Notes β yes that's the whole thing, some dedicated SAP Notes are literally the foundation of saptune's work. on top of that, some best practice guides got added as Note definitions too, so the system can be optimized for some really special cases β¨
saptune can apply settings for a single Note definition, or it can set all the settings for a predefined solution β which is just a collection of several SAP Notes, like a little squad π―ββοΈ and yes, it can also revert all these settings back to the previous system settings. undoing is self-care, periodt.
it can verify whether the current system configuration is in sync with a specific Note definition or a defined solution, and it shows you the differences β the way it does that is honestly iconic. saptune doesn't only set kernel values (like sysctl does), it also handles things like cpu governor, energy perf bias, force latency (dma latency) and the disk io scheduler. plus it checks/verifies that suitable rpm versions are installed and that special kernel command line values are set, all according to the relevant SAP Notes π
so saptune checks and applies values in various locations during runtime, like:
/proc/sys/,/proc/sys/vm/,/proc/sys/kernel,/proc/sys/fs/sys/block/*/queue/schedulerand/sys/block/*/queue/nr_requests/sys/devices/system/cpu/*/cpufreq/scaling_governor/sys/devices/system/cpu/*/cpuidle/state*/latency/sys/devices/system/cpu/*/cpuidle/state*/disable/dev/shm/etc/security/limits.d//etc/systemd/logind.conf.d/- and some others π
to do most of these settings, saptune needs to run with root privilege. so like, please keep in mind: users who run saptune are considered privileged users with administrative rights. that's a lot of power, bestie β use it responsibly π₯
by default saptune prints all results to stdout, and Errors and Warnings go to stderr π’ but! by using --format FORMAT this behaviour can be changed. supported formats are:
π¦ json
prints all results in a machine readable json output format defined by the schemata delivered in /usr/share/saptune/schemas/1.1 π»
and some important lore you need to know: saptune does no longer use tuned(8) to restart after a system reboot. it's using its own systemd service named "saptune.service" π
starting with version 3.2 and operating system version 15SP4 we ship the saptune.service with enhanced security-related features like systemd hardening π‘οΈ but please keep in mind that all security measures only apply if saptune is invoked by its systemd unit! so like, invoking it by hand doesn't get you that armor, iykyk π
we decided to have only ONE solution applied, but multiple Notes. Each Note is applied exactly once. no doubling up. we don't do that here π
π οΈ SERVICE ACTIONS π οΈ
β¨ start
Okay bestie, so start boots up the saptune service and applies a whole set of optimizations to your system β but only if you picked solutions or notes during an earlier call of saptune. And if the service is enabled? The tuning just auto-activates on system boot like it's got main character energy. π
It literally redirects to systemctl start saptune.service.
Success gets reported on stdout, and errors β including systemd error messages β go to stderr. The action gets logged, no cap.
Heads up: it will fail in case sapconf.service is running or has exited, or if save state files are present. π
If the action was successful the exit code is 0, otherwise 1.
π©Ί status
Reports the following status info on stdout β it's giving full diagnostic glow-up:
- status of
saptune.service(enabled/disabled, active/inactive/failed/...the other possible unit states...) - saptune package version
- configured saptune major version (from the central saptune configuration file)
- enabled Solution The entry 'enabled Solution' shows the Solution, which was manually applied by
saptune solution apply <solution name>and its related Notes. - applied Solution The entry 'applied Solution' shows the Solution, which is currently applied and its related and applied Notes.
- additional enabled Notes, sorted lexicographically The entry 'additional enabled Notes' shows all Notes, which were additionally applied manually by
saptune note apply <note name>. They are one part of the list of notes in the entry 'applied Notes' and 'enabled Notes'. - all selected Notes in applied order The list of 'enabled Notes' includes all Notes from 'additional enabled Notes' and additional all the Notes related to the 'enabled Solution' too. The list shows the order in which these Notes were applied and will be re-applied after a system reboot, if the
saptune.serviceis enabled. - all currently applied Notes in applied order The list of 'applied Notes' includes the manually applied Notes. Additional it includes all the Notes related to the 'configured Solution' too. These Notes get applied when using
saptune solution apply. The solutions and their related notes can be listed bysaptune solution list. And additional 'applied Notes' shows if the system is 'actively' tuned at the moment. If the list is empty, the system is not tuned. If the list is not empty, the system is tuned. - A list of orphaned Overrides These are override files existing in
/etc/saptune/override, but with no related Note definition file found in the working area/var/lib/saptune/working/or in the custom/vendor directory/etc/saptune/extra. - state of staging
- staged Notes
- staged Solutions
- status of
sapconf.service(enabled/disabled, active/inactive/failed/...the other possible unit states...) - status of tuned (enabled/disabled, active/inactive/failed/...the other possible unit states..., profile)
- the overall systemd 'system' status, read from
systemctl is-system-running(running, degraded, ....) - the tuning state of the system, gathered by
saptune note verify:"unknown (checking disabled)", if the flage--non-compliance-checkis used."not tuned", if no Solution or Note is applied."not-present", if 'verify' hit an error."not compliant", if one or more parameter values differ from the related SAP Note. For detailed information please usesaptune note verify."compliant", if all parameter values comply with the values from the related SAP Notes.
This information is not logged, but only printed to stdout. π«§
Exit code tea β: if saptune.service is not 'active' the exit code is 1. If the system is 'not tuned' β which means no Note or Solution is enabled β the exit code is 3. If the system is tuned, but the tuning is not compliant the exit code is 4. Otherwise the exit code is 0.
π stop
Stops the saptune service and reverts all optimizations that were previously applied by saptune. If the service is disabled, the tuning will no longer automatically activate upon boot β it's giving "we're so done" energy. π ββοΈ
It redirects to systemctl stop saptune.service.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
π restart
Reverts all optimizations that were previously applied by saptune. And after that applies a set of optimizations to the system, if solutions or notes were selected during a previous call of saptune. Glow-down then glow-up, iconic. β¨
It redirects to systemctl restart saptune.service.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
IfIGNORE_RELOADis set toyesin the saptune configuration file the action 'restart' will do nothing. The reason will be logged. See the 'NOTE' section at the end of the man page for more information.
β
enable
Enables the saptune service. To activate the tuning, the saptune service needs to be started. But as the service is now enabled, the tuning will automatically activate upon system boot. π
It redirects to systemctl enable saptune.service.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
It will fail in case sapconf.service is running or has exited, or if save state files are present. π
If the action was successful the exit code is 0, otherwise 1.
π« disable
Disables the saptune service. To revert all optimizations that were previously applied by saptune, the saptune service needs to be stopped. But as the service is now disabled, the tuning will no longer automatically activate upon system boot. Bye bestie π
It redirects to systemctl disable saptune.service.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
π enablestart
Enables and starts the saptune service, then applies a set of optimizations to the system, if solutions or notes were selected during a previous call of saptune. As the service is now enabled, the tuning will automatically activate upon system boot. Two-for-one slay π
Calls systemctl enable saptune.service and systemctl start saptune.service in this order.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
π disablestop
Disables and stops the saptune service, and reverts all optimizations that were previously applied by saptune. As the service is now disabled, the tuning will no longer automatically activate upon system boot. Closing time π―οΈ
Calls systemctl disable saptune.service and systemctl stop saptune.service in this order.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
π takeover
This action is meant to start and enable saptune service where competing services like sapconf and/or tuned get stopped and disabled. This is the modern replacement for the removed saptune daemon start β it's giving succession arc. π«Ά
Calls systemctl enablestart saptune.service after stopping and disabling sapconf.service and tuned.service.
Success is reported on stdout, errors including systemd error messages are printed on stderr. The action gets logged.
If the action was successful the exit code is 0, otherwise 1.
β οΈ ATTENTION
saptune is able to start/stop/enable/disable systemd units, but on boot the outcome depends on the order of execution. Order matters, bestie β it's literally the whole plot. π
If saptune is starting (or stopping) a systemd service ([service] section) it might happen, that the action gets reverted later by systemd because that service is disabled (or enabled) and executed after saptune.service.
Similar a service enabled (or disabled) by saptune might already be stopped (or started) by systemd, because it came before saptune.service.
If the execution order cannot be assured by service dependencies, it is recommended to set both (start,enable or stop,disable) in a Note definition or an Override.
π NOTE ACTIONS π
So, "Note" here denotes either a SAP Note, a vendor specific tuning definition or a SUSE recommendation article. All three, same vibe check. πΈ
π§ apply
Applies optimization settings specified in the Note. The Note will be automatically activated upon system boot if the saptune service is enabled.
If a Note definition contains a [reminder] section, this section will be printed after the note has applied successfully. It will be highlighted with red color. π¨
A Note can only be applied once.
β οΈ ATTENTION: Please be in mind: If a Note definition to be applied contains parameter settings which are likewise set before by an already applied Note these settings get be overwritten. The last comes, the last wins, it's all about 'order'.
So be careful when applying solutions or notes or when reverting notes, especially if these notes are part of an already applied solution. You can re-apply such a note, but the order β and may be the resulting parameter settings β will be unlike before. Special attention is needed, if customer or vendor specific notes from /etc/saptune/extra are used. π
π list
Lists all SAP Notes, vendor specific tuning definitions and SUSE recommendation articles that saptune is capable of implementing. The whole roster, fr fr. β
Currently implemented notes get a lil marker next to them: + if you enabled it yourself by hand, * if a solution turned it on, or - if a note that belongs to an enabled solution got reverted manually. Whichever one it is, these notes are highlighted in green. β¨
If an override file exists for a NoteID, the note gets marked with O, and a customer- or vendor-specific note gets marked with C.
If we sniff out a conflict between notes, the related entry in the list gets a leading ! and the whole line lights up yellow. Go peek at the log file for the deets β that's where the warning messages about the problem live. Right now we report a conflict when a customer or vendor specific note has the same name as a shipped note. In that case, the shipped note wins and takes precedence over the custom one. (no cap, that's just how it goes π
)
enabled
Prints all currently enabled notes as a list separated by blanks, with no trailing line feed. Clean and simple. π
applied
Prints all currently applied notes as a list separated by blanks, with no trailing line feed. Same energy, different list. π
verify
If you pass it a Note ID, saptune verifies the currently running system against the recommendations specified in that Note. It's giving "vibe check but for your kernel settings". π₯
The output table looks like this:
SAPNote, Version | Parameter | Expected | Override | Actual | Compliant
- Expected β the values read from the Note definition file
- Override β the values found in an override file
- Actual β the current system value
- Compliant β
yesif theExpectedandActualvalues match, ornoif there's no match
Some rows have little footnote references with extra info, and they'll explain why a value doesn't match. Here's the whole legend, bestie π§:
[1]setting is not supported by the system This may result in a-in columnCompliant, but the system will nevertheless be reported as fully conforms to the specified note.[2]setting is not available on the system In case ofgrubsettings, this may result in anoin columnCompliant, but the system will nevertheless be reported as fully conforms to the specified note, because mostgrubsettings mentioned in the SAP Notes are covered by other, alternative settings.[3]value is only checked, but NOT set In case ofgrubsettings, this may result in anoin columnCompliant, but the system will nevertheless be reported as fully conforms to the specified note, because mostgrubsettings mentioned in the SAP Notes are covered by other, alternative settings.[4]cpu idle state settings differ[5]expected value does not contain a supported scheduler[6]grub settings are mostly covered by other settings. See man pagesaptune-note(5)for details[7]parameter value is untouched by default If the parameter value in the Note definition file is leftempty, the current system value of the parameter will not be changed.[8]cannot set Perf Bias because SecureBoot is enabled" If SecureBoot is enabled some system settings areread onlyand can not be changed.[9]expected value limited tomax_hw_sectors_kb"The possible value for parameterMAX_SECTORS_KB(/sys/block/*/queue/max_sectors_kb) is limited by the value of/sys/block/*/queue/max_hw_sectors_kb.
If a Note definition contains a [reminder] section, that section gets printed below the table and the footnotes, and it'll be highlighted in red. π¨
Oh and β by using the command line argument --show-non-compliant you can limit the verify output to show only non-compliant parameters. Heads up though: the output will not be colorized even if a color scheme is defined. π
Okay so you can use a color scheme for the verify output table, and it's lowkey adorable. The color scheme can be given as a command line argument --colorscheme SCHEME or as a parameterβvalue pair COLOR_SCHEME SCHEME in the saptune command saptune configure COLOR_SCHEME <SCHEME>.
To reset the color scheme, use the command saptune configure COLOR_SCHEME ''
Possible color schemes are:
full-green-zebraβ whole line is colored green (compliant) or red (not compliant)full-blue-zebraβ whole line is colored blue (compliant) or yellow (not compliant)cmpl-green-zebraβ only the content in the Compliant column is colored green (compliant) or red (not compliant)cmpl-blue-zebraβ only the content in the Compliant column is colored blue (compliant) or yellow (not compliant)full-red-noncmplβ only the whole line of the not compliant parameter is colored redfull-yellow-noncmplβ only the whole line of the not compliant parameter is colored yellowred-noncmplβ only the content in the Compliant column of the not compliant parameter is colored redyellow-noncmplβ only the content in the Compliant column of the not compliant parameter is colored yellow
The default, if no color scheme is given, is full-red-noncmpl. And if an unknown color scheme is given in the command line or in the config file, you get non-colorized, simple black text printed. Humble. π€
The "final lines" with the overall result of the verify operation are colored green (compliant) or red (not compliant) independent from the chosen color scheme. Those ones always show up dripped out, periodt. π
edit
This one lets you edit the values of the customer or vendor specific Note definitions in /etc/saptune/extra. An editor gets launched so you can change the Note definitions β the editor is defined by the EDITOR environment variable, and if that's not set the editor defaults to /usr/bin/vim.
You can change already available parameters and values, or you can add new parameters and values, or add additional sections with parameter value pairs. Go off, customize your heart out. π
If the Note is currently applied and/or an override file exists, saptune will remind you to take care of this situation. Considerate queen behavior tbh. π«Ά
customise
This allows you to customize the values of the saptune Note definitions. The Note definition file will be copied from /usr/share/saptune/notes or /etc/saptune/extra to the override location at /etc/saptune/override, if the file does not exist already. After that an editor will be launched so you can change the Note definitions. The editor is defined by the EDITOR environment variable β if it's not set, editor defaults to /usr/bin/vim.
K important boundary: you can only change the value from already available parameters of the note. You are not able to add new parameters. That's the whole line between customise and edit, iykyk. πΈ
If you want to use new parameters to tune the system, please create your own custom Note definition file in /etc/saptune/extra.
You can prevent a parameter from being changed by leaving the parameter value in the override file empty. That parameter will be marked as untouched in the override column of the verify table. Iconic little safe space for your settings. β¨
The values from the override files will take precedence over the values from /usr/share/saptune/notes or /etc/saptune/extra. In such case you will not lose your customized Notes between saptune or vendor updates. The saptune options list and verify will mark the existence of an override file and the contained values.
ATTENTION: Creating or changing an override file just changes the configuration inside this Note definition file, but does not change the running configuration of the system. That means: when creating or changing an override file for an already applied Note definition, please do a saptune note revert <NoteID> and then apply this Note again, to get the changes take effect. Do not skip this step bestie, it will not work otherwise π
create
This allows you to create own Note definition files in /etc/saptune/extra. The Note definition file will be created from a template file into the location /etc/saptune/extra, if the file does not exist already. After that an editor will be launched so you can change the Note definitions. The editor is defined by the EDITOR environment variable β if it's not set, editor defaults to /usr/bin/vim. You need to choose a unique NoteID for this operation, so use saptune note list to find the already used NoteIDs. No duplicate names, we're not doing that. π«
refresh
ATTENTION: experimental
Identifies and activates changed parameter settings of a Note definition. The changes get active without first reverting the old settings, so the tuning of the system gets not interrupted. Seamless glow-up energy. β¨
ATTENTION: This action is currently in the state experimental!
Currently only parameter of section [sysctl], [sys] and [vm] are supported by the refresh action.
Parameter of section [version], [rpm], [grub], [fs] and [reminder] are only checked by saptune, but not applied. So there is nothing to do during refresh of a note and these sections are skipped without notice. π
Parameter of all other sections are currently not supported by the refresh action and not evaluated. If such parameter are available in the to be refreshed Note, an info is logged per affected parameter. At least it tells you, fr fr. π
revert
Revert optimization settings carried out by the Note, and the Note will no longer be activated automatically upon system boot. Clean slate, we love to see it. π¦
revertall
Revert optimization settings carried out by all applied notes, and the notes will no longer be activated automatically upon system boot. All of them. Every single one. Group revert, iconic. π
show
Print content of Note definition file to stdout. Simple as that, no notes. π
delete
This allows you to delete a customer or vendor specific Note definition file including the corresponding override file if available. A confirmation is needed to finish the action β we're not letting you nuke things by accident. π
ATTENTION: Note definition files shipped by the saptune package β so called internal saptune Note definition files β must not be deleted. There will be an appropriate error message. If a corresponding override file is available, there will be the possibility to delete this file instead.
renameβ okay bestie, this one renames a customer or vendor specific Note definition file to a shiny new name. If thereβs a corresponding override file, that gets renamed too. A confirmation is needed to finish the action. If the new Note definition name already exists, the command stops with a message about it.
β οΈ ATTENTION: Note definition files shipped by thesaptunepackage β the so-called internalsaptuneNote definition files β and their corresponding override files, if available, must not be renamed. Youβll get an appropriate error message.
β οΈ ATTENTION: If the Note is already applied, the command stops and tells you that the Note first needs to be reverted before it can be renamed.
π SOLUTION ACTIONS π
A solution is literally a collection of one or more Notes, and activating a solution activates all the associated Notes. Itβs giving βone playlist, many bangersβ π
The solution definitions shipped with saptune live in /usr/share/saptune/sols, and vendor/customer specific solution definitions live in /etc/saptune/extra.
You cannot combine solutions β there can only be one solution enabled. But you can change a solution definition by using an override file in /etc/saptune/override, or by creating a custom specific solution definition in /etc/saptune/extra. Iconic flexibility, no cap β¨
The following solution definitions are currently shipped with saptune:
BOBJβ Solution for running SAP BusinessObjects.HANAβ Solution for running an SAP HANA database.MAXDBβ Solution for running an SAP MaxDB database.NETWEAVERβ Solution for running SAP NetWeaver application servers.NETWEAVER+HANAβ Solution for running both SAP application servers and SAP HANA on the same host.NETWEAVER+MAXDBβ Solution for running both SAP application servers and SAP MaxDB on the same host.S4HANA-APPSERVERβ Solution for running SAP S/4HANA application serversS4HANA-APP+DBβ Solution for running both SAP S/4HANA application servers and SAP HANA on the same hostS4HANA-DBSERVERβ Solution for running the SAP HANA database of an SAP S/4HANA installationSAP-ASEβ Solution for running an SAP Adaptive Server Enterprise database.
Syntax of the solution definition file names:
<solutionName>.sol
e.g. V4711.sol
applyβ Apply optimization settings recommended by the solution. These settings are automatically activated upon system boot if thesaptuneservice is enabled. Set it and forget it, bestie π«Άlistβ List all solution names thatsaptuneis capable of implementing. The currently implemented solution is marked with*and highlighted with green color. A deprecated solution is marked withD. If an override file exists for a solution, the solution is marked withO. A custom specific solution is marked withC. If a note belonging to an enabled solution is reverted manually, the note is highlighted with red color (instead of green) and is crossed out. If we detect a conflict with solutions, the related entry in the list is marked with a leading!and the line is highlighted with yellow color. Look at the log file for details like warning messages addressing the problem. Currently we report a conflict if a customer or vendor specific solution has the same name as a shipped solution. In this case the shipped solution will take precedence over the custom solution. Drama, but make it functional πenabledβ Print the currently enabled solution.appliedβ Print the currently applied solution. If one or more notes of the solution are reverted β which is indicated by a-in the output ofsaptune note listβ the string(partial)is added to the solution name.verifyβ If a Solution name is specified,saptuneverifies the running system against all Notes of that Solution regardless of their state.editβ This allows you to edit the note list of the customer or vendor specific solution definitions in/etc/saptune/extra. An editor will be launched to allow changing the Note definitions. The editor is defined by theEDITORenvironment variable. If not set, editor defaults to/usr/bin/vim. You can change, add or delete noteIDs in the list of notes defining the solution. If the solution is currently applied and/or an override file exists,saptunewill remind you to take care of this situation.customiseβ This allows you to customize the note list of thesaptunesolution definitions. The solution definition file will be copied from/usr/share/saptune/solsor/etc/saptune/extrato the override location at/etc/saptune/override, if the file does not exist already. After that an editor will be launched to allow changing the solution definitions. The editor is defined by theEDITORenvironment variable. If not set, editor defaults to/usr/bin/vim. You can change, add or delete noteIDs in the list of notes defining the solution. The values from the override files will take precedence over the values from/usr/share/saptune/solsor/etc/saptune/extra. In such case you will not lose your customized solutions betweensaptuneor vendor updates. Thesaptuneoptionlistwill mark the existence of an override file.
β οΈ ATTENTION: Creating or changing an override file just changes the configuration inside this solution definition file, but does not change the running configuration of the system. That means: when creating or changing an override file for an already applied solution definition, please do a saptune solution revert <solutionName> and then apply this solution again, to get the changes take effect. No shortcuts, bestie π
createβ This allows you to create own solution definition files in/etc/saptune/extra. The solution definition file will be created from a template file into the location/etc/saptune/extra, if the file does not exist already. After that an editor will be launched to allow changing the solution definition. The editor is defined by theEDITORenvironment variable. If not set, editor defaults to/usr/bin/vim. You need to choose an unique solution name for this operation. Usesaptune solution listto find the already used solution names.revertβ Revert optimization settings recommended by the solution, and these settings will no longer be activated automatically upon system boot.changeβ Switch to a new solution even that another solution was already applied.
β οΈ ATTENTION: Because of the revert of the old solution during the execution of the actionchange, the system will be not sufficient tuned for SAP workloads for a short period of time until the new solution is applied successfully. This may harm a running SAP system. So use this action carefully. And please be in mind: because of therevertandapply, the order of notes and therefore the active tuning may change, especially if additional notes were applied beside the old applied solution.
showβ Print content of solution definition file to stdout.deleteβ This allows you to delete a customer or vendor specific solution definition file including the corresponding override file if available. A confirmation is needed to finish the action.
β οΈ ATTENTION: Solution definition files shipped by thesaptunepackage β the so-called internalsaptunesolution definition files β must not be deleted. There will be an appropriate error message. If a corresponding override file is available, there will be the possibility to delete this file instead.
β οΈ ATTENTION: If the Solution is already applied, the command will be terminated with the information that the Solution first needs to be reverted before it can be deleted.
renameβ This allows you to rename a customer or vendor specific solution definition file to a new name. If a corresponding override file is available, this file will be renamed too. A confirmation is needed to finish the action. If the new solution definition name already exists, the command will be terminated with a respective message.
β οΈ ATTENTION: Solution definition files shipped by thesaptunepackage β the so-called internalsaptunesolution definition files β and their corresponding override files, if available, must not be renamed. There will be an appropriate error message.
β οΈ ATTENTION: If the Solution is already applied, the command will be terminated with the information that the Solution first needs to be reverted before it can be renamed.
π STAGING ACTIONS π
okay so bestie, staging is the whole "don't just surprise me" feature π
β it exists so you (the customer) get to control and release changes that package updates ship into your working environment. Like, the whole idea is that Note definition files shipped by saptune in updates are not used by saptune for system tuning immediately. An administrator has to explicitly release the updates before saptune uses them. This means you can update saptune β even with changed Notes β without having changes in system behavior. no cap, that's the entire point β¨
Staging is disabled by default, because not every customer needs the feature, and having it enabled by default would break the previous behaviour. π«Ά
You can enable staging with saptune staging enable (see the description below, it's right there π).
So now we've got 3 areas where Note definition files and solution definitions shipped by saptune can live:
heads up: this is only about Note definition files and solution definitions shipped by saptune. Custom definition files or override files are NOT affected. π«
π¦ Package Area
Directory where the saptune package stores and maintains shipped Note definition files and solution definitions. This directory gets changed by RPM package operations solely.
Currently this is /usr/share/saptune/.
πΈ Working Area
Directory which contains configuration objects saptune note|solution|service will use. Only Notes and solutions from here can be applied.
Currently this is /var/lib/saptune/working/.
π¦ Staging Area
Directory where configuration objects are stored, which are present in the package area but differ from the objects in the working area.
Currently this is /var/lib/saptune/staging/.
At the moment only the Notes from the last update are kept in /var/lib/saptune/staging/latest.
statusβ Displays the status of staging, basically the content of the variableSTAGINGin the centralsaptuneconfiguration file.is-enabledβ Returns the status of staging, basically the content of the variableSTAGINGin the centralsaptuneconfiguration file, as an exit code (0== enabled,1== disabled). No output is generated, because this one is meant to be used in scripts. π€enable|disableβ Enables or disables staging, by setting the variableSTAGINGin the centralsaptuneconfiguration file. The result of the status change is displayed. β¨
Altering the setting does not change the content of the staging and working directory. If a user disables staging, a package update might clean the staging area and update the working area. π
listβ Lists all Notes and the solution definition which can be released from the staging area, including name, description, version and release date. The solution definition is shown as a whole object β it is only possible to release the entire definition, but not single solutions. Lastly a hint is printed to remind the user that he has to release staged objects before he can use them, and that it is possible to view the changes. πdiff [ ( NOTEID | SOLUTIONNAME.sol )... | all ]β Shows the differences between the Note (or all Notes) or the Solution definition in the staging area and the working area. For each Note in the staging area the output contains the values of all parameters which differ. This includes new or removed parameters as well as changes in the reminder section. For the Solution, all changed solutions are displayed with their differences. Lastly a hint is printed to remind the user that he has to release staged objects before he can use them. πanalysis [ ( NOTEID | SOLUTIONNAME.sol )... | all ]β Does an analysis of the requested Notes, the Solution definitions or everything in the staging area to warn the user about possible issues or additional steps to perform. Lastly a hint is printed to remind the user that he has to release staged objects before he can use them, as well as that he should check out the differences. π§release [ ( NOTEID | SOLUTIONNAME.sol )... | all ]β Releases the requested Notes, the Solution definitions or everything in the staging area. This means the Notes or the Solution definitions get moved from the staging area to the working area. In case of a deleted Note/Solution, it will be removed from the working area. First the command will show an analysis of the objects going to be released, to make the user aware of further needed actions or potential problems (for details seesaptune staging dependencies).
β οΈ Because the release is irreversible, the user has to confirm the action. Like, fr fr, it asks first β read it before you smash that confirm, bestie. π
π CONFIGURE ACTIONS π
This replaces the direct editing of the saptune configuration file /etc/sysconfig/saptune in SLES for SAP 15 β which will be replaced by an intern configuration file in SLE 16 and won't be present in future versions. π
Not all of the former variables will be available as a configure option β only those which should be changeable by the user. iykyk.
COLOR_SCHEME SCHEMEβ Default color scheme. Seesaptune verifyin this man page for available color schemes. To reset the color scheme use an empty value as SCHEME, likesaptune configure COLOR_SCHEME ''SKIP_SYSCTL_FILES FILE[,FILE...]β Comma-separated list of sysctl config files or directories which should be excluded when checking if parameters handled bysaptuneare handled by sysctl as well. Input is checked: if the given files are in a location which is searched by thesysctlcommand, and if not, the files will be skipped.IGNORE_RELOAD yes||noβ Controls behavior ofsystemctl reload saptune.serviceand thesystemctl try-restart saptune.serviceduring package installation.DEBUG on||offβ Turns on or off the DebugLog output.
π¨ ATTENTION: Active DebugLog will clutter the output of saptune commands and can render the output hard to read. Additionally it is flooding the log file with debug information. So use this setting with caution. Only turn it on if instructed by SUSE support to do so. π
TrentoASDP <period>||offβ Sets the discovery period (saptune-discovery-period) of the Trento Agent in/etc/trento/agent.yamlfor collectingsaptuneinformation from the system. The discovery period is the time in seconds between 2saptunecalls initiated by the Trento Agent β the tick interval for thesaptunediscovery loop. Adapting this value can preventsaptune currently in use, try latererrors (exit code11) fromsaptune. Trento will start with a default of900sPossible values are"300","600","900","1800"and"3600"seconds or"off"to disable the check during start ofsaptune
If the variable is set, saptune will check during start if the value of the variable found in the saptune configuration file is valid and still set in /etc/trento/agent.yaml. If not, a Warning will pop up. Setting TrentoASDP to "off" will disable the check during start of saptune. The setting of saptune-discovery-period in the Trento Agent config is not affected by this setting. π§
resetβ Reverts the tuning and resets the content of thesaptuneconfiguration file to the installation default. Asks for confirmation. βshowβ Shows the content of thesaptuneconfiguration file. π
β VERIFY ACTIONS β
verify appliedβ Verifies all system parameters against all applied Notes. Same as asaptune note verify
π₯ REFRESH ACTIONS π₯
refresh appliedβ ATTENTION: experimental π§ͺ Refreshes all applied Notes. Same as asaptune note refresh
π¦ REVERT ACTIONS π¦
revert allβ Revert all optimization settings recommended by the SAP solution and/or the Notes, and these settings will no longer be activated automatically upon system boot. π
π CHECK ACTIONS π
checkβ Will simply call the external script/usr/sbin/saptune_check.
πΈ STATUS ACTIONS πΈ
statusβ Will display the currentsaptunestatus. This will be short forsaptune service status.
π VERSION ACTIONS π
versionβ Will display the currently activesaptuneversion.
β¨ HELP ACTIONS β¨
helpβ Will display the syntax ofsaptune
π VENDOR SUPPORT π
To support vendor or customer specific tuning values, saptune supports 'drop-in' files residing in /etc/saptune/extra. All files found in /etc/saptune/extra are listed when running saptune note list. All note options are available for these files. slay. π«Ά
We simplified the file name syntax for these vendor files. Related to this we add 'header' support (see description of section [version] in saptune-note(5)) for the vendor files as already available for the Note definition files in /usr/share/saptune/notes to get a proper description during saptune option list.
Syntax of the file names:
<NoteID>.conf
e.g. V4711.conf
Syntax of the file:
The content of the 'drop-in' file should be written in an INI file style with sections headed by [section_name] keywords. See saptune-note(5) to find the supported sections and their available options.
π¨ ATTENTION: If renaming or removing an active (aka 'already applied') note definition file from the file system, the old name of this note still remains in the configuration of saptune. This may lead to unexpected messages. So please always revert the note before renaming or removing it from the file system. Even if editing an active vendor or customer specific note definition file on the file system level, please do a revert of that note and then apply the Note again, to get the changes take effect. π seriously, do the revert first.
π§ customer specific solution definitions
In addition to the vendor or customer specific note file definitions described previously, saptune now supports vendor or customer specific solution definitions by using 'drop-in' files in /etc/saptune/extra. All solutions found in /etc/saptune/extra are listed when running saptune solution list. All solution options are available for these solutions.
Syntax of the solution definition file names:
<solutionName>.sol
e.g. V4711.sol
β οΈ ATTENTION β οΈ
Trento support, bestie, listen up: if you're planning to use Trento and its whole "I check whether your SAP environment config is actually correct" superpower, you gotta adapt the following solution name schema for your custom solutions, okay?
<saptune_shipped_solutionname>_<your_preferred_badge>.sol
e.g. NETWEAVER_MyOwnSolution.sol β that's the vibe π
File syntax time β¨ The content of the custom specific solution files should be written in a INI file style with sections headed by [section_name] keywords. At the moment saptune supports two architectures β ArchX86 for the x86 platform and ArchPPC64LE for 64-bit PowerPC little endian platform for the solution definitions. So the possible sections for solution definitions are [version] (peep the description of section [version] in saptune-note(5)) for a brief description of the solutions, plus [ArchX86] and [ArchPPC64LE] for the solution definitions themselves. Iconic.
The solution itself is described as a list of note definition files separated by blanks. The solution name is defined by the filename without the .sol suffix. A solution is only valid and listed by saptune solution list if all the listed note definition files can be found in the working area or in /etc/saptune/extra. No notes, no listing, periodt.
e.g. filename is NEWSOL1.sol with content
[version]
VERSION=1
DATE=15.12.2020
DESCRIPTION=My custom specific solution definitions
REFERENCES=
[ArchX86]
1980196 CUSTOMNOTE1 CUSTOMNOTE2
[ArchPPC64LE]
1980196 CUSTOMNOTE1 CUSTOMNOTE2
πͺ EXIT CODES πͺ
All saptune commands share the following exit codes, and yes they're giving "we're all in this together" energy:
0β the action was successfully π1β the action failed π128β an error in the configuration file occurred e.g. missing variables) π
The following commands have individual exit codes additionally or alternatively (main character energy, they get their own rules):
saptune service status
1βsaptune.serviceis not started (regardless if configured or not)2β not used3βsaptune.servicehas been started, but tuning (Note or Solution) is not configured4βsaptune.servicehas been started, but tuning is not compliant.
saptune staging analysis
1β actions are required by the user, but no solution might break2β a Solution might break π¬5β error during calculation
saptune staging release
2β a Solution might break π¬5β error during calculation
saptune check
1β some warnings occurred andsaptuneshould work2β some errors occurred andsaptunewill not work3β wrong parameters has been given to the tool (should never happen, if called bysaptune check!)5β unexpected errors in regards of JSON output occurred
π₯ HOTFIX π₯
A HotFix is a new way to react fast to critical bugs, that can harm SAP installations. It's basically the emergency glow-up πβ¨
It is meant to bridge the time with a temporary mitigation until the permanent fix is available. As soon as the fix is released, the next released saptune version will contain an update to the HotFix to be applied only when necessary. One year after the fix is available, we will remove the HotFix from saptune. Cleanup era, we love to see it.
We hope to provide an comfortable way to address such issues. π«Ά
The HotFix will be added as individual Note with the name HotFix<TID_NUMBER> and can be part of a Solution. A HotFix release will contain only configuration changes and no new features. (No surprise features, just fixes, iykyk.)
To activate the HotFix you can simply apply the Note by
saptune note apply HotFix<TID_NUMBER>
which will not interrupt your current tuning but add the needed parameter settings. The change will take effect immediately and is reboot persistent. So chill, your tuning stays up πΈ
Or you restart the saptune.service, which will lead to a short gap in your tuning because of the 'revert'/'apply' workflow of the service restart. Your SAP workload should be stopped for this operation. Yeah, that one's a whole thing β plan for it.
Or you reboot your server.
As soon as the permanent fix is available and installed on the system, the Hotfix can be reverted with
saptune note revert HotFix<TID_NUMBER>
The next released saptune version will contain an update of the HotFix with a condition (tag) to apply this HotFix only under the condition the permanent fix is not installed on the systems. The HotFix will be removed from saptune one year after the permanent fix is available, giving customers enough time to update their systems. Considerate queens π
π¦ CHANGES π¦
changelog
The changelog file of the saptune rpm package contains detailed information, what was changed between the various package versions. The command
rpm -q --changes saptune | more
will show the content of the file. Go read your history, bestie π
version 3
With the update to saptune version 3 saptune does no longer use tuned(8) to restart after a system reboot. It is using its own systemd service named "saptune.service".
So we now deprecated all "DAEMON ACTIONS" like saptune daemon start. These commands will still work as they are internally linked to the related "SERVICE ACTIONS" like saptune service takeover. Please refer to the related section descriptions at the top of this man page. Old habits but make it service-y π
version 3.1
With the update to saptune version 3.1 we deprecated the actions saptune note simulate and saptune solution simulate.
version 3.2
With the update to saptune version 3.2 on SLES for SAP 12 and 15 we deprecated the manual editing of the file /etc/sysconfig/saptune as the main configuration file will be (re)moved in future versions. So like... don't get attached to it bestie.
Additional the Solution SAP-ASE.sol and the related Notes 1680803 and 1805750 are deprecated on SLES for SAP 12 and 15 and removed in SLE 16.
SAP Note 1771258 not relevant/valid anymore on SLE 16, we deprecated the Note and the support for setting PAM limits in SLES for SAP 12 and 15 and removed both in SLE 16.
The already deprecated actions 'daemon', 'note simulate' and 'solution simulate' are removed in SLE16. Gone gone, not coming back π
version 3.2.3
SAP Note 941735 not relevant/valid anymore, we deprecated the Note with the update to saptune version 3.2.3 on SLES for SAP 12, 15 and 16 and on plain SLES 16.
π FILES π
/usr/share/saptune/schemas/1.0β schemata that define the json output format, available since saptune version 3.1. iconic little schema era β¨/usr/share/saptune/schemas/1.1β schemata that define the json output format, available since saptune version 3.2. upgraded schema, same slay π/usr/share/saptune/notesβ part of the Package Area. These are the saptune SAP Note definitions, shipped by the saptune RPM package. Bestie, please do not change the files here. You will lose all your changes during a saptune package update. π/usr/share/saptune/solsβ part of the Package Area. These are the saptune solution definitions, shipped by the saptune RPM package. Please do not change these either, because maintenance updates of package saptune will overwrite these files without preserving any custom changes. no cap, use override files instead π«Ά/var/lib/saptune/working/notesβ part of the Working Area. These are the saptune SAP Note definitions that can be listed bysaptune note list. The files are named with the number of their corresponding SAP Note (==NoteID). A description of the syntax and the available tuning options lives insaptune-note(5). Please do not change the files located here. You will lose all your changes during asaptune staging releasecommand. Use override files to change parameter values if needed. π/var/lib/saptune/working/solsβ part of the Working Area. These are the saptune solution definitions that can be listed bysaptune solution list. At the moment saptune supports two architectures βArchX86for the x86 platform andArchPPC64LEfor 64-bit PowerPC little endian platform β with different solution definitions. Please do not change the files located here, as the commandsaptune staging releasemay overwrite these files without preserving any custom changes. Use override files to change the note list of the solutions. π¦/var/lib/saptune/staging/latestsβ part of the Staging Area. These are the saptune SAP Note or solution definitions that are present in the Package Area but differ from the files in the Working Area. staging-era behavior, very main character energy π/etc/sysconfig/saptuneβ the central saptune configuration file in SLES for SAP 12 and 15. It contains the information about the currently enabled notes and solutions, the order in which these notes are applied, and the version of saptune currently used. ATTENTION: the manual editing of this file will be deprecated on SLES for SAP 12 and 15 as the main configuration file will be (re)moved in SLE 16. Please usesaptune configurecommand instead of editing the file directly. π/etc/saptune/extraβ vendor or customer specific tuning or solution definitions. Please see VENDOR SUPPORT above for more information. You can usesaptune note create NoteIDorsaptune solution create solutionNameto create a new vendor or customer specific definition, orsaptune note edit NoteIDorsaptune solution edit solutionNameto modify an already existing vendor or customer specific definition. cute custom corner, fr fr π/etc/saptune/overrideβ the saptune Note and solution definition override location. If you need to customize the Note or solution definitions found in/usr/share/saptune/notesor/usr/share/saptune/solsor in/etc/saptune/extra, you can copy them to/etc/saptune/overrideand modify them as you need. Please stay with the original name of the Note or solution definition (theNoteIDor solution name) and do NOT rename it. Or usesaptune note customize NoteIDorsaptune solution customize solutionNameto do the job for you. override girlies rise π/run/saptune/saved_state/and/run/saptune/parameter/β saptune was designed to preserve the state of the system before starting the SAP specific tuning, so that it will be possible to restore this previous state of the system if the SAP specific tuning is no longer needed or should be changed. This system state is saved during theapplyoperation of saptune in the saptune internal used files in/run/saptune/saved_stateand/run/saptune/parameter. The content of these files highly depends on the previous state of the system. If the values are applied by saptune, no further monitoring of the system parameters are done, so changes of saptune relevant parameters will not be observed. If a SAP Note or a SAP solution should be reverted, then first the values read from the/run/saptune/saved_stateand/run/saptune/parameterfiles will be applied to the system to restore the previous system state, and then the correspondingsave_statefile will be removed. Please do not change or remove files in this directory. The knowledge about the previous system state gets lost and the revert functionality of saptune will be destructed. So you will lose the capability to revert back the tunings saptune has done. π protect the saved state, bestie π«Ά
π NOTE π
Using saptune within a pipe, the color information will be removed from the output. It is possible to change this behavior by using the command line option --force-color. rainbow mode said βnot today, pipeβ π
π NOTE π
When the values from the saptune Note definitions are applied to the system, no further monitoring of the system parameters are done. So changes of saptune relevant parameters by using the sysctl command or by editing configuration files will not be observed. If the values set by saptune should be reverted, these unrecognized changed settings will be overwritten by the previous saved system settings from saptune. lowkey important, highkey real π
π NOTE π
To prevent unintended reload/restart of saptune during package installation/update of saptune or normal work β which will result in a short time period where the system is not tuned for SAP workloads β itβs possible to set the parameter IGNORE_RELOAD in the central saptune configuration file /etc/sysconfig/saptune.
IGNORE_RELOAD is used to control the systemctl reload saptune.service behavior.
Default is IGNORE_RELOAD="no", which means that the reload is working as expected.
If set to yes, a systemctl reload saptune.service and a saptune service restart will do nothing. The reason will be logged.
Additional this parameter setting will prevent systemctl restart saptune.service (which is a ExecStop followed by ExecStart) called from macros used during the package installation/update of the saptune package from restarting the tuning.
ATTENTION: Outside the saptune package installation systemctl restart saptune.service can not be blocked. periodt, thatβs just how it is π
π¨ ATTENTION π¨
Higher or lower system values set by the system, the SAP installer or by the administrator using sysctl command or sysctl configuration files will be now overwritten by saptune, if they are part of the applied Note definitions.
saptune now sets the values read from the Note definition files irrespective of already set higher system values. If you need other tuning values as defined in the Note definition files, please use the possibility to create override files, which contain the values you need. override files are the move, bestie β¨
π SEE ALSO π
saptune-note(5) saptune-solution(5) saptune(7)
π AUTHOR π
Soeren Schmidt <soeren.schmidt@suse.com>, Angela Briel <abriel@suse.com>
okay thatβs the whole saptune(8) manual, April 2025 edition β mwah, go tune responsibly πππ¦
π¦ where this page comes from
- opensuse-leap 16.0: saptune 3.2.4-160000.1.1 Β· GPL-3.0-only
- opensuse-leap 16.0: saptune 3.2.4-160000.1.1 Β· GPL-3.0-only
- Copyright (c) 2017-2025 SUSE LLC
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms