1
0
Fork 0

Merge pull request #289 from yarda/rt-entsk-plugin

Rt entsk plugin
This commit is contained in:
Jaroslav Škarvada 2020-11-13 18:30:42 +01:00 committed by GitHub
commit 2321625400
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 6 deletions

View file

@ -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() {

View file

@ -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 "$?"
}

View file

@ -58,3 +58,5 @@ script = ${i:PROFILE_DIR}/script.sh
[scheduler]
isolated_cores=${isolated_cores}
[rtentsk]

View 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()