commit
2321625400
4 changed files with 39 additions and 6 deletions
|
|
@ -5,7 +5,6 @@
|
|||
KTIMER_LOCKLESS_FILE=/sys/kernel/ktimer_lockless_check
|
||||
|
||||
start() {
|
||||
systemctl start rt-entsk
|
||||
if [ -f $KTIMER_LOCKLESS_FILE ]; then
|
||||
echo 1 > $KTIMER_LOCKLESS_FILE
|
||||
fi
|
||||
|
|
@ -13,8 +12,7 @@ start() {
|
|||
}
|
||||
|
||||
stop() {
|
||||
systemctl stop rt-entsk
|
||||
return "$?"
|
||||
return 0
|
||||
}
|
||||
|
||||
verify() {
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ start() {
|
|||
|
||||
disable_ksm
|
||||
|
||||
systemctl start rt-entsk
|
||||
|
||||
if [ -f $KTIMER_LOCKLESS_FILE ]; then
|
||||
echo 1 > $KTIMER_LOCKLESS_FILE
|
||||
fi
|
||||
|
|
@ -23,7 +21,6 @@ stop() {
|
|||
teardown_kvm_mod_low_latency
|
||||
enable_ksm
|
||||
fi
|
||||
systemctl stop rt-entsk
|
||||
return "$?"
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,3 +58,5 @@ script = ${i:PROFILE_DIR}/script.sh
|
|||
|
||||
[scheduler]
|
||||
isolated_cores=${isolated_cores}
|
||||
|
||||
[rtentsk]
|
||||
|
|
|
|||
36
tuned/plugins/plugin_rtentsk.py
Normal file
36
tuned/plugins/plugin_rtentsk.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from . import base
|
||||
from .decorators import *
|
||||
import tuned.logs
|
||||
from tuned.utils.commands import commands
|
||||
import glob
|
||||
import socket
|
||||
import time
|
||||
|
||||
log = tuned.logs.get()
|
||||
|
||||
class RTENTSKPlugin(base.Plugin):
|
||||
"""
|
||||
Plugin for avoiding interruptions due to static key IPIs due
|
||||
to opening socket with timestamping enabled (by opening a
|
||||
socket ourselves the static key is kept enabled).
|
||||
"""
|
||||
|
||||
def _instance_init(self, instance):
|
||||
instance._has_static_tuning = True
|
||||
instance._has_dynamic_tuning = False
|
||||
|
||||
# SO_TIMESTAMP nor SOF_TIMESTAMPING_OPT_TX_SWHW is defined by
|
||||
# the socket class
|
||||
|
||||
SO_TIMESTAMP = 29 # see include/uapi/asm-generic/socket.h
|
||||
#define SO_TIMESTAMP 0x4012 # parisc!
|
||||
SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14) # see include/uapi/linux/net_tstamp.h
|
||||
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
|
||||
s.setsockopt(socket.SOL_SOCKET, SO_TIMESTAMP, SOF_TIMESTAMPING_OPT_TX_SWHW)
|
||||
self.rtentsk_socket = s
|
||||
log.info("opened SOF_TIMESTAMPING_OPT_TX_SWHW socket")
|
||||
|
||||
def _instance_cleanup(self, instance):
|
||||
s = self.rtentsk_socket
|
||||
s.close()
|
||||
Loading…
Reference in a new issue