From 12c8dbaa98473a38287ac50a1facfc432dac2d67 Mon Sep 17 00:00:00 2001 From: Talor Itzhak Date: Wed, 23 Nov 2022 16:10:53 +0200 Subject: [PATCH] set RPS for veth on host level only RPS handling on pod container level using crio-hooks causes long delay times when running the low latency script to set the RPS mask (https://bugzilla.redhat.com/show_bug.cgi?id=2109965) For RAN low latency solution it might be sufficient only to set the RPS on the host level and avoid setting it on the container level while utilizing RSS behavior. In the past the low latency hook was added with RPS additional settings on virtual devices since there was an issue where the start and shutdown of big amount of pods will initiate the creation of the systemd service that should update the new interfaces rps_cpus mask and can create an additional CPU load under the cluster (openshift-kni/performance-addon-operators#659) This might not be the case any more thus we need to examine how the revert of the aforementioned PR will behave now. Co-authored-by: Yanir Quinn Signed-off-by: Talor Itzhak --- .../assets/configs/99-low-latency-hooks.json | 11 -- build/assets/configs/99-netdev-rps.rules | 2 +- build/assets/scripts/low-latency-hooks.sh | 38 ------ functests/1_performance/performance.go | 20 +-- .../components/machineconfig/machineconfig.go | 24 +--- .../manual_machineconfig.yaml | 122 ++++++++---------- 6 files changed, 58 insertions(+), 159 deletions(-) delete mode 100644 build/assets/configs/99-low-latency-hooks.json delete mode 100644 build/assets/scripts/low-latency-hooks.sh diff --git a/build/assets/configs/99-low-latency-hooks.json b/build/assets/configs/99-low-latency-hooks.json deleted file mode 100644 index cbf6085c6..000000000 --- a/build/assets/configs/99-low-latency-hooks.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "1.0.0", - "hook": { - "path": "/usr/local/bin/low-latency-hooks.sh", - "args": ["low-latency-hooks.sh", "{{.RPSMask}}"] - }, - "when": { - "always": true - }, - "stages": ["prestart"] -} diff --git a/build/assets/configs/99-netdev-rps.rules b/build/assets/configs/99-netdev-rps.rules index 571b27fc5..153ed4bb3 100644 --- a/build/assets/configs/99-netdev-rps.rules +++ b/build/assets/configs/99-netdev-rps.rules @@ -1 +1 @@ -SUBSYSTEM=="net", ACTION=="add", ENV{DEVPATH}!="/devices/virtual/net/veth*", ENV{ID_BUS}!="pci", TAG+="systemd", ENV{SYSTEMD_WANTS}="update-rps@%k.service" +SUBSYSTEM=="net", ACTION=="add", ENV{ID_BUS}!="pci", TAG+="systemd", ENV{SYSTEMD_WANTS}="update-rps@%k.service" diff --git a/build/assets/scripts/low-latency-hooks.sh b/build/assets/scripts/low-latency-hooks.sh deleted file mode 100644 index 544abad9c..000000000 --- a/build/assets/scripts/low-latency-hooks.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -JQ="/usr/bin/jq" -IP="/usr/sbin/ip" - -mask="${1}" -[ -n "${mask}" ] || { logger "${0}: The rps-mask parameter is missing" ; exit 0; } - -pid=$(${JQ} '.pid' /dev/stdin 2>&1) -[[ $? -eq 0 && -n "${pid}" ]] || { logger "${0}: Failed to extract the pid: ${pid}"; exit 0; } - -ns=$(${IP} netns identify "${pid}" 2>&1) -[[ $? -eq 0 && -n "${ns}" ]] || { logger "${0} Failed to identify the namespace: ${ns}"; exit 0; } - -# Updates the container veth RPS mask on the node -netns_link_indexes=$(${IP} netns exec "${ns}" ${IP} -j link | ${JQ} ".[] | select(.link_index != null) | .link_index") -for link_index in ${netns_link_indexes}; do - container_veth=$(${IP} -j link | ${JQ} ".[] | select(.ifindex == ${link_index}) | .ifname" | tr -d '"') - echo ${mask} > /sys/devices/virtual/net/${container_veth}/queues/rx-0/rps_cpus -done - -# Updates the RPS mask for the interface inside of the container network namespace -mode=$(${IP} netns exec "${ns}" [ -w /sys ] && echo "rw" || echo "ro" 2>&1) -[ $? -eq 0 ] || { logger "${0} Failed to determine if the /sys is writable: ${mode}"; exit 0; } - -if [ "${mode}" = "ro" ]; then - res=$(${IP} netns exec "${ns}" mount -o remount,rw /sys 2>&1) - [ $? -eq 0 ] || { logger "${0}: Failed to remount /sys as rw: ${res}"; exit 0; } -fi - -# /sys/class/net can't be used recursively to find the rps_cpus file, use /sys/devices/virtual instead -res=$(${IP} netns exec "${ns}" find /sys/devices/virtual -type f -name rps_cpus -exec sh -c "echo ${mask} | cat > {}" \; 2>&1) -[[ $? -eq 0 && -z "${res}" ]] || logger "${0}: Failed to apply the RPS mask: ${res}" - -if [ "${mode}" = "ro" ]; then - ${IP} netns exec "${ns}" mount -o remount,ro /sys - [ $? -eq 0 ] || exit 1 # Error out so the pod will not start with a writable /sys -fi diff --git a/functests/1_performance/performance.go b/functests/1_performance/performance.go index f8604baf1..42abcf610 100644 --- a/functests/1_performance/performance.go +++ b/functests/1_performance/performance.go @@ -2,7 +2,6 @@ package __performance import ( "context" - "encoding/json" "fmt" "path/filepath" "reflect" @@ -360,31 +359,14 @@ var _ = Describe("[rfe_id:27368][performance]", func() { expectedRPSCPUs, err := cpuset.Parse(string(*profile.Spec.CPU.Reserved)) Expect(err).ToNot(HaveOccurred()) - ociHookPath := filepath.Join("/rootfs", machineconfig.OCIHooksConfigDir, machineconfig.OCIHooksConfig+".json") - Expect(err).ToNot(HaveOccurred()) for _, node := range workerRTNodes { - // Verify the OCI RPS hook uses the correct RPS mask - hooksConfig, err := nodes.ExecCommandOnMachineConfigDaemon(&node, []string{"cat", ociHookPath}) - Expect(err).ToNot(HaveOccurred()) - - var hooks map[string]interface{} - err = json.Unmarshal(hooksConfig, &hooks) - Expect(err).ToNot(HaveOccurred()) - hook := hooks["hook"].(map[string]interface{}) - Expect(hook).ToNot(BeNil()) - args := hook["args"].([]interface{}) - Expect(len(args)).To(Equal(2), "unexpected arguments: %v", args) - - rpsCPUs, err := components.CPUMaskToCPUSet(args[1].(string)) - Expect(err).ToNot(HaveOccurred()) - Expect(rpsCPUs).To(Equal(expectedRPSCPUs), "the hook rps mask is different from the reserved CPUs") // Verify the systemd RPS service uses the correct RPS mask cmd := []string{"sed", "-n", "s/^ExecStart=.*echo \\([A-Fa-f0-9]*\\) .*/\\1/p", "/rootfs/etc/systemd/system/update-rps@.service"} serviceRPSCPUs, err := nodes.ExecCommandOnNode(cmd, &node) Expect(err).ToNot(HaveOccurred()) - rpsCPUs, err = components.CPUMaskToCPUSet(serviceRPSCPUs) + rpsCPUs, err := components.CPUMaskToCPUSet(serviceRPSCPUs) Expect(err).ToNot(HaveOccurred()) Expect(rpsCPUs).To(Equal(expectedRPSCPUs), "the service rps mask is different from the reserved CPUs") diff --git a/pkg/controller/performanceprofile/components/machineconfig/machineconfig.go b/pkg/controller/performanceprofile/components/machineconfig/machineconfig.go index 29f70e3db..c584945ad 100644 --- a/pkg/controller/performanceprofile/components/machineconfig/machineconfig.go +++ b/pkg/controller/performanceprofile/components/machineconfig/machineconfig.go @@ -39,11 +39,8 @@ const ( bashScriptsDir = "/usr/local/bin" crioConfd = "/etc/crio/crio.conf.d" crioRuntimesConfig = "99-runtimes.conf" - ociHooks = "low-latency-hooks" // OCIHooksConfigDir is the default directory for the OCI hooks - OCIHooksConfigDir = "/etc/containers/oci/hooks.d" - // OCIHooksConfig file contains the low latency hooks configuration - OCIHooksConfig = "99-low-latency-hooks" + OCIHooksConfigDir = "/etc/containers/oci/hooks.d" ociTemplateRPSMask = "RPSMask" udevRulesDir = "/etc/udev/rules.d" udevRpsRules = "99-netdev-rps" @@ -138,7 +135,7 @@ func getIgnitionConfig(assetsDir string, profile *performancev2.PerformanceProfi // add script files under the node /usr/local/bin directory mode := 0700 - for _, script := range []string{hugepagesAllocation, ociHooks, setRPSMask} { + for _, script := range []string{hugepagesAllocation, setRPSMask} { src := filepath.Join(assetsDir, "scripts", fmt.Sprintf("%s.sh", script)) if err := addFile(ignitionConfig, src, getBashScriptPath(script), &mode); err != nil { return nil, err @@ -161,23 +158,6 @@ func getIgnitionConfig(assetsDir string, profile *performancev2.PerformanceProfi return nil, err } - // add crio hooks config under the node cri-o hook directory - crioHooksConfigsMode := 0644 - config := fmt.Sprintf("%s.json", OCIHooksConfig) - ociHooksConfigContent, err := GetOCIHooksConfigContent(filepath.Join(assetsDir, "configs", config), profile) - if err != nil { - return nil, err - } - - if err := addContent( - ignitionConfig, - ociHooksConfigContent, - filepath.Join(OCIHooksConfigDir, config), - &crioHooksConfigsMode, - ); err != nil { - return nil, err - } - // add rps udev rule rpsRuleMode := 0644 var rule string diff --git a/testdata/render-expected-output/manual_machineconfig.yaml b/testdata/render-expected-output/manual_machineconfig.yaml index 807c28041..2b4fc7501 100644 --- a/testdata/render-expected-output/manual_machineconfig.yaml +++ b/testdata/render-expected-output/manual_machineconfig.yaml @@ -6,10 +6,10 @@ metadata: machineconfiguration.openshift.io/role: worker-cnf name: 50-performance-manual ownerReferences: - - apiVersion: "" - kind: PerformanceProfile - name: manual - uid: "" + - apiVersion: "" + kind: PerformanceProfile + name: manual + uid: "" spec: config: ignition: @@ -24,75 +24,61 @@ spec: passwd: {} storage: files: - - contents: - source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2V0IC1ldW8gcGlwZWZhaWwKCm5vZGVzX3BhdGg9Ii9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZSIKaHVnZXBhZ2VzX2ZpbGU9IiR7bm9kZXNfcGF0aH0vbm9kZSR7TlVNQV9OT0RFfS9odWdlcGFnZXMvaHVnZXBhZ2VzLSR7SFVHRVBBR0VTX1NJWkV9a0IvbnJfaHVnZXBhZ2VzIgoKaWYgWyAhIC1mICIke2h1Z2VwYWdlc19maWxlfSIgXTsgdGhlbgogIGVjaG8gIkVSUk9SOiAke2h1Z2VwYWdlc19maWxlfSBkb2VzIG5vdCBleGlzdCIKICBleGl0IDEKZmkKCnRpbWVvdXQ9NjAKc2FtcGxlPTEKY3VycmVudF90aW1lPTAKd2hpbGUgWyAiJChjYXQgIiR7aHVnZXBhZ2VzX2ZpbGV9IikiIC1uZSAiJHtIVUdFUEFHRVNfQ09VTlR9IiBdOyBkbwogIGVjaG8gIiR7SFVHRVBBR0VTX0NPVU5UfSIgPiIke2h1Z2VwYWdlc19maWxlfSIKCiAgY3VycmVudF90aW1lPSQoKGN1cnJlbnRfdGltZSArIHNhbXBsZSkpCiAgaWYgWyAkY3VycmVudF90aW1lIC1ndCAkdGltZW91dCBdOyB0aGVuCiAgICBlY2hvICJFUlJPUjogJHtodWdlcGFnZXNfZmlsZX0gZG9lcyBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGh1Z2VwYWdlcyAke0hVR0VQQUdFU19DT1VOVH0iCiAgICBleGl0IDEKICBmaQoKICBzbGVlcCAkc2FtcGxlCmRvbmUK - verification: {} - group: {} - mode: 448 - path: /usr/local/bin/hugepages-allocation.sh - user: {} - - contents: - source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgYmFzaAoKSlE9Ii91c3IvYmluL2pxIgpJUD0iL3Vzci9zYmluL2lwIgoKbWFzaz0iJHsxfSIKWyAtbiAiJHttYXNrfSIgXSB8fCB7IGxvZ2dlciAiJHswfTogVGhlIHJwcy1tYXNrIHBhcmFtZXRlciBpcyBtaXNzaW5nIiA7IGV4aXQgMDsgfQoKcGlkPSQoJHtKUX0gJy5waWQnIC9kZXYvc3RkaW4gMj4mMSkKW1sgJD8gLWVxIDAgJiYgLW4gIiR7cGlkfSIgXV0gfHwgeyBsb2dnZXIgIiR7MH06IEZhaWxlZCB0byBleHRyYWN0IHRoZSBwaWQ6ICR7cGlkfSI7IGV4aXQgMDsgfQoKbnM9JCgke0lQfSBuZXRucyBpZGVudGlmeSAiJHtwaWR9IiAyPiYxKQpbWyAkPyAtZXEgMCAmJiAtbiAiJHtuc30iIF1dIHx8IHsgbG9nZ2VyICIkezB9IEZhaWxlZCB0byBpZGVudGlmeSB0aGUgbmFtZXNwYWNlOiAke25zfSI7IGV4aXQgMDsgfQoKIyBVcGRhdGVzIHRoZSBjb250YWluZXIgdmV0aCBSUFMgbWFzayBvbiB0aGUgbm9kZQpuZXRuc19saW5rX2luZGV4ZXM9JCgke0lQfSBuZXRucyBleGVjICIke25zfSIgJHtJUH0gLWogbGluayB8ICR7SlF9ICIuW10gfCBzZWxlY3QoLmxpbmtfaW5kZXggIT0gbnVsbCkgfCAubGlua19pbmRleCIpCmZvciBsaW5rX2luZGV4IGluICR7bmV0bnNfbGlua19pbmRleGVzfTsgZG8KICBjb250YWluZXJfdmV0aD0kKCR7SVB9IC1qIGxpbmsgfCAke0pRfSAiLltdIHwgc2VsZWN0KC5pZmluZGV4ID09ICR7bGlua19pbmRleH0pIHwgLmlmbmFtZSIgfCB0ciAtZCAnIicpCiAgZWNobyAke21hc2t9ID4gL3N5cy9kZXZpY2VzL3ZpcnR1YWwvbmV0LyR7Y29udGFpbmVyX3ZldGh9L3F1ZXVlcy9yeC0wL3Jwc19jcHVzCmRvbmUKCiMgVXBkYXRlcyB0aGUgUlBTIG1hc2sgZm9yIHRoZSBpbnRlcmZhY2UgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgbmV0d29yayBuYW1lc3BhY2UKbW9kZT0kKCR7SVB9IG5ldG5zIGV4ZWMgIiR7bnN9IiBbIC13IC9zeXMgXSAmJiBlY2hvICJydyIgfHwgZWNobyAicm8iIDI+JjEpClsgJD8gLWVxIDAgXSB8fCB7IGxvZ2dlciAiJHswfSBGYWlsZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSAvc3lzIGlzIHdyaXRhYmxlOiAke21vZGV9IjsgZXhpdCAwOyB9CgppZiBbICIke21vZGV9IiA9ICJybyIgXTsgdGhlbgogICAgcmVzPSQoJHtJUH0gbmV0bnMgZXhlYyAiJHtuc30iIG1vdW50IC1vIHJlbW91bnQscncgL3N5cyAyPiYxKQogICAgWyAkPyAtZXEgMCBdIHx8IHsgbG9nZ2VyICIkezB9OiBGYWlsZWQgdG8gcmVtb3VudCAvc3lzIGFzIHJ3OiAke3Jlc30iOyBleGl0IDA7IH0KZmkKCiMgL3N5cy9jbGFzcy9uZXQgY2FuJ3QgYmUgdXNlZCByZWN1cnNpdmVseSB0byBmaW5kIHRoZSBycHNfY3B1cyBmaWxlLCB1c2UgL3N5cy9kZXZpY2VzL3ZpcnR1YWwgaW5zdGVhZApyZXM9JCgke0lQfSBuZXRucyBleGVjICIke25zfSIgZmluZCAvc3lzL2RldmljZXMvdmlydHVhbCAtdHlwZSBmIC1uYW1lIHJwc19jcHVzIC1leGVjIHNoIC1jICJlY2hvICR7bWFza30gfCBjYXQgPiB7fSIgXDsgMj4mMSkKW1sgJD8gLWVxIDAgJiYgLXogIiR7cmVzfSIgXV0gfHwgbG9nZ2VyICIkezB9OiBGYWlsZWQgdG8gYXBwbHkgdGhlIFJQUyBtYXNrOiAke3Jlc30iCgppZiBbICIke21vZGV9IiA9ICJybyIgXTsgdGhlbgogICAgJHtJUH0gbmV0bnMgZXhlYyAiJHtuc30iIG1vdW50IC1vIHJlbW91bnQscm8gL3N5cwogICAgWyAkPyAtZXEgMCBdIHx8IGV4aXQgMSAjIEVycm9yIG91dCBzbyB0aGUgcG9kIHdpbGwgbm90IHN0YXJ0IHdpdGggYSB3cml0YWJsZSAvc3lzCmZpCg== - verification: {} - group: {} - mode: 448 - path: /usr/local/bin/low-latency-hooks.sh - user: {} - - contents: - source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGV2PSQxClsgLW4gIiR7ZGV2fSIgXSB8fCB7IGVjaG8gIlRoZSBkZXZpY2UgYXJndW1lbnQgaXMgbWlzc2luZyIgPiYyIDsgZXhpdCAxOyB9CgptYXNrPSQyClsgLW4gIiR7bWFza30iIF0gfHwgeyBlY2hvICJUaGUgbWFzayBhcmd1bWVudCBpcyBtaXNzaW5nIiA+JjIgOyBleGl0IDE7IH0KCmRldl9kaXI9Ii9zeXMvY2xhc3MvbmV0LyR7ZGV2fSIKCmZ1bmN0aW9uIGZpbmRfZGV2X2RpciB7CiAgc3lzdGVtZF9kZXZzPSQoc3lzdGVtY3RsIGxpc3QtdW5pdHMgLXQgZGV2aWNlIHwgZ3JlcCBzeXMtc3Vic3lzdGVtLW5ldC1kZXZpY2VzIHwgY3V0IC1kJyAnIC1mMSkKCiAgZm9yIHN5c3RlbWRfZGV2IGluICR7c3lzdGVtZF9kZXZzfTsgZG8KICAgIGRldl9zeXNmcz0kKHN5c3RlbWN0bCBzaG93ICIke3N5c3RlbWRfZGV2fSIgLXAgU3lzRlNQYXRoIC0tdmFsdWUpCgogICAgZGV2X29yaWdfbmFtZT0iJHtkZXZfc3lzZnMjIyovfSIKICAgIGlmIFsgIiR7ZGV2X29yaWdfbmFtZX0iID0gIiR7ZGV2fSIgXTsgdGhlbgogICAgICBkZXZfbmFtZT0iJHtzeXN0ZW1kX2RldiMjKi19IgogICAgICBkZXZfbmFtZT0iJHtkZXZfbmFtZSUlLmRldmljZX0iCiAgICAgIGlmIFsgIiR7ZGV2X25hbWV9IiA9ICIke2Rldn0iIF07IHRoZW4gIyBkaXNyZWdhcmQgdGhlIG9yaWdpbmFsIGRldmljZSB1bml0CiAgICAgICAgICAgICAgY29udGludWUKICAgICAgZmkKCiAgICAgIGVjaG8gIiR7ZGV2fSBkZXZpY2Ugd2FzIHJlbmFtZWQgdG8gJGRldl9uYW1lIgogICAgICBkZXZfZGlyPSIvc3lzL2NsYXNzL25ldC8ke2Rldl9uYW1lfSIKICAgICAgYnJlYWsKICAgIGZpCiAgZG9uZQp9CgpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IGZpbmRfZGV2X2RpciAgICAgICAgICAgICAgICAjIHRoZSBuZXQgZGV2aWNlIHdhcyByZW5hbWVkLCBmaW5kIHRoZSBuZXcgbmFtZQpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IHsgc2xlZXAgNTsgZmluZF9kZXZfZGlyOyB9ICAjIHNlYXJjaCBmYWlsZWQsIHdhaXQgYSBsaXR0bGUgYW5kIHRyeSBhZ2FpbgpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IHsgZWNobyAiJHtkZXZfZGlyfSIgZGlyZWN0b3J5IG5vdCBmb3VuZCA+JjIgOyBleGl0IDA7IH0gIyB0aGUgaW50ZXJmYWNlIGRpc2FwcGVhcmVkLCBub3QgYW4gZXJyb3IKCmZpbmQgIiR7ZGV2X2Rpcn0iL3F1ZXVlcyAtdHlwZSBmIC1uYW1lIHJwc19jcHVzIC1leGVjIHNoIC1jICJlY2hvICR7bWFza30gfCBjYXQgPiB7fSIgXDs= - verification: {} - group: {} - mode: 448 - path: /usr/local/bin/set-rps-mask.sh - user: {} - - contents: - source: data:text/plain;charset=utf-8;base64,CltjcmlvLnJ1bnRpbWVdCmluZnJhX2N0cl9jcHVzZXQgPSAiMCIKCgojIFdlIHNob3VsZCBjb3B5IHBhc3RlIHRoZSBkZWZhdWx0IHJ1bnRpbWUgYmVjYXVzZSB0aGlzIHNuaXBwZXQgd2lsbCBvdmVycmlkZSB0aGUgd2hvbGUgcnVudGltZXMgc2VjdGlvbgpbY3Jpby5ydW50aW1lLnJ1bnRpbWVzLnJ1bmNdCnJ1bnRpbWVfcGF0aCA9ICIiCnJ1bnRpbWVfdHlwZSA9ICJvY2kiCnJ1bnRpbWVfcm9vdCA9ICIvcnVuL3J1bmMiCgojIFRoZSBDUkktTyB3aWxsIGNoZWNrIHRoZSBhbGxvd2VkX2Fubm90YXRpb25zIHVuZGVyIHRoZSBydW50aW1lIGhhbmRsZXIgYW5kIGFwcGx5IGhpZ2gtcGVyZm9ybWFuY2UgaG9va3Mgd2hlbiBvbmUgb2YKIyBoaWdoLXBlcmZvcm1hbmNlIGFubm90YXRpb25zIHByZXNlbnRzIHVuZGVyIGl0LgojIFdlIHNob3VsZCBwcm92aWRlIHRoZSBydW50aW1lX3BhdGggYmVjYXVzZSB3ZSBuZWVkIHRvIGluZm9ybSB0aGF0IHdlIHdhbnQgdG8gcmUtdXNlIHJ1bmMgYmluYXJ5IGFuZCB3ZQojIGRvIG5vdCBoYXZlIGhpZ2gtcGVyZm9ybWFuY2UgYmluYXJ5IHVuZGVyIHRoZSAkUEFUSCB0aGF0IHdpbGwgcG9pbnQgdG8gaXQuCltjcmlvLnJ1bnRpbWUucnVudGltZXMuaGlnaC1wZXJmb3JtYW5jZV0KcnVudGltZV9wYXRoID0gIi9iaW4vcnVuYyIKcnVudGltZV90eXBlID0gIm9jaSIKcnVudGltZV9yb290ID0gIi9ydW4vcnVuYyIKYWxsb3dlZF9hbm5vdGF0aW9ucyA9IFsiY3B1LWxvYWQtYmFsYW5jaW5nLmNyaW8uaW8iLCAiY3B1LXF1b3RhLmNyaW8uaW8iLCAiaXJxLWxvYWQtYmFsYW5jaW5nLmNyaW8uaW8iXQo= - verification: {} - group: {} - mode: 420 - path: /etc/crio/crio.conf.d/99-runtimes.conf - user: {} - - contents: - source: data:text/plain;charset=utf-8;base64,ewogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAiaG9vayI6IHsKICAgICJwYXRoIjogIi91c3IvbG9jYWwvYmluL2xvdy1sYXRlbmN5LWhvb2tzLnNoIiwKICAgICJhcmdzIjogWyJsb3ctbGF0ZW5jeS1ob29rcy5zaCIsICIwMDAwMDAwMSJdCiAgfSwKICAid2hlbiI6IHsKICAgICJhbHdheXMiOiB0cnVlCiAgfSwKICAic3RhZ2VzIjogWyJwcmVzdGFydCJdCn0K - verification: {} - group: {} - mode: 420 - path: /etc/containers/oci/hooks.d/99-low-latency-hooks.json - user: {} - - contents: - source: data:text/plain;charset=utf-8;base64,U1VCU1lTVEVNPT0ibmV0IiwgQUNUSU9OPT0iYWRkIiwgRU5We0RFVlBBVEh9IT0iL2RldmljZXMvdmlydHVhbC9uZXQvdmV0aCoiLCBFTlZ7SURfQlVTfSE9InBjaSIsIFRBRys9InN5c3RlbWQiLCBFTlZ7U1lTVEVNRF9XQU5UU309InVwZGF0ZS1ycHNAJWsuc2VydmljZSIK - verification: {} - group: {} - mode: 420 - path: /etc/udev/rules.d/99-netdev-rps.rules - user: {} + - contents: + source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2V0IC1ldW8gcGlwZWZhaWwKCm5vZGVzX3BhdGg9Ii9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZSIKaHVnZXBhZ2VzX2ZpbGU9IiR7bm9kZXNfcGF0aH0vbm9kZSR7TlVNQV9OT0RFfS9odWdlcGFnZXMvaHVnZXBhZ2VzLSR7SFVHRVBBR0VTX1NJWkV9a0IvbnJfaHVnZXBhZ2VzIgoKaWYgWyAhIC1mICIke2h1Z2VwYWdlc19maWxlfSIgXTsgdGhlbgogIGVjaG8gIkVSUk9SOiAke2h1Z2VwYWdlc19maWxlfSBkb2VzIG5vdCBleGlzdCIKICBleGl0IDEKZmkKCnRpbWVvdXQ9NjAKc2FtcGxlPTEKY3VycmVudF90aW1lPTAKd2hpbGUgWyAiJChjYXQgIiR7aHVnZXBhZ2VzX2ZpbGV9IikiIC1uZSAiJHtIVUdFUEFHRVNfQ09VTlR9IiBdOyBkbwogIGVjaG8gIiR7SFVHRVBBR0VTX0NPVU5UfSIgPiIke2h1Z2VwYWdlc19maWxlfSIKCiAgY3VycmVudF90aW1lPSQoKGN1cnJlbnRfdGltZSArIHNhbXBsZSkpCiAgaWYgWyAkY3VycmVudF90aW1lIC1ndCAkdGltZW91dCBdOyB0aGVuCiAgICBlY2hvICJFUlJPUjogJHtodWdlcGFnZXNfZmlsZX0gZG9lcyBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGh1Z2VwYWdlcyAke0hVR0VQQUdFU19DT1VOVH0iCiAgICBleGl0IDEKICBmaQoKICBzbGVlcCAkc2FtcGxlCmRvbmUK + verification: {} + group: {} + mode: 448 + path: /usr/local/bin/hugepages-allocation.sh + user: {} + - contents: + source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGV2PSQxClsgLW4gIiR7ZGV2fSIgXSB8fCB7IGVjaG8gIlRoZSBkZXZpY2UgYXJndW1lbnQgaXMgbWlzc2luZyIgPiYyIDsgZXhpdCAxOyB9CgptYXNrPSQyClsgLW4gIiR7bWFza30iIF0gfHwgeyBlY2hvICJUaGUgbWFzayBhcmd1bWVudCBpcyBtaXNzaW5nIiA+JjIgOyBleGl0IDE7IH0KCmRldl9kaXI9Ii9zeXMvY2xhc3MvbmV0LyR7ZGV2fSIKCmZ1bmN0aW9uIGZpbmRfZGV2X2RpciB7CiAgc3lzdGVtZF9kZXZzPSQoc3lzdGVtY3RsIGxpc3QtdW5pdHMgLXQgZGV2aWNlIHwgZ3JlcCBzeXMtc3Vic3lzdGVtLW5ldC1kZXZpY2VzIHwgY3V0IC1kJyAnIC1mMSkKCiAgZm9yIHN5c3RlbWRfZGV2IGluICR7c3lzdGVtZF9kZXZzfTsgZG8KICAgIGRldl9zeXNmcz0kKHN5c3RlbWN0bCBzaG93ICIke3N5c3RlbWRfZGV2fSIgLXAgU3lzRlNQYXRoIC0tdmFsdWUpCgogICAgZGV2X29yaWdfbmFtZT0iJHtkZXZfc3lzZnMjIyovfSIKICAgIGlmIFsgIiR7ZGV2X29yaWdfbmFtZX0iID0gIiR7ZGV2fSIgXTsgdGhlbgogICAgICBkZXZfbmFtZT0iJHtzeXN0ZW1kX2RldiMjKi19IgogICAgICBkZXZfbmFtZT0iJHtkZXZfbmFtZSUlLmRldmljZX0iCiAgICAgIGlmIFsgIiR7ZGV2X25hbWV9IiA9ICIke2Rldn0iIF07IHRoZW4gIyBkaXNyZWdhcmQgdGhlIG9yaWdpbmFsIGRldmljZSB1bml0CiAgICAgICAgICAgICAgY29udGludWUKICAgICAgZmkKCiAgICAgIGVjaG8gIiR7ZGV2fSBkZXZpY2Ugd2FzIHJlbmFtZWQgdG8gJGRldl9uYW1lIgogICAgICBkZXZfZGlyPSIvc3lzL2NsYXNzL25ldC8ke2Rldl9uYW1lfSIKICAgICAgYnJlYWsKICAgIGZpCiAgZG9uZQp9CgpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IGZpbmRfZGV2X2RpciAgICAgICAgICAgICAgICAjIHRoZSBuZXQgZGV2aWNlIHdhcyByZW5hbWVkLCBmaW5kIHRoZSBuZXcgbmFtZQpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IHsgc2xlZXAgNTsgZmluZF9kZXZfZGlyOyB9ICAjIHNlYXJjaCBmYWlsZWQsIHdhaXQgYSBsaXR0bGUgYW5kIHRyeSBhZ2FpbgpbIC1kICIke2Rldl9kaXJ9IiBdIHx8IHsgZWNobyAiJHtkZXZfZGlyfSIgZGlyZWN0b3J5IG5vdCBmb3VuZCA+JjIgOyBleGl0IDA7IH0gIyB0aGUgaW50ZXJmYWNlIGRpc2FwcGVhcmVkLCBub3QgYW4gZXJyb3IKCmZpbmQgIiR7ZGV2X2Rpcn0iL3F1ZXVlcyAtdHlwZSBmIC1uYW1lIHJwc19jcHVzIC1leGVjIHNoIC1jICJlY2hvICR7bWFza30gfCBjYXQgPiB7fSIgXDs= + verification: {} + group: {} + mode: 448 + path: /usr/local/bin/set-rps-mask.sh + user: {} + - contents: + source: data:text/plain;charset=utf-8;base64,CltjcmlvLnJ1bnRpbWVdCmluZnJhX2N0cl9jcHVzZXQgPSAiMCIKCgojIFdlIHNob3VsZCBjb3B5IHBhc3RlIHRoZSBkZWZhdWx0IHJ1bnRpbWUgYmVjYXVzZSB0aGlzIHNuaXBwZXQgd2lsbCBvdmVycmlkZSB0aGUgd2hvbGUgcnVudGltZXMgc2VjdGlvbgpbY3Jpby5ydW50aW1lLnJ1bnRpbWVzLnJ1bmNdCnJ1bnRpbWVfcGF0aCA9ICIiCnJ1bnRpbWVfdHlwZSA9ICJvY2kiCnJ1bnRpbWVfcm9vdCA9ICIvcnVuL3J1bmMiCgojIFRoZSBDUkktTyB3aWxsIGNoZWNrIHRoZSBhbGxvd2VkX2Fubm90YXRpb25zIHVuZGVyIHRoZSBydW50aW1lIGhhbmRsZXIgYW5kIGFwcGx5IGhpZ2gtcGVyZm9ybWFuY2UgaG9va3Mgd2hlbiBvbmUgb2YKIyBoaWdoLXBlcmZvcm1hbmNlIGFubm90YXRpb25zIHByZXNlbnRzIHVuZGVyIGl0LgojIFdlIHNob3VsZCBwcm92aWRlIHRoZSBydW50aW1lX3BhdGggYmVjYXVzZSB3ZSBuZWVkIHRvIGluZm9ybSB0aGF0IHdlIHdhbnQgdG8gcmUtdXNlIHJ1bmMgYmluYXJ5IGFuZCB3ZQojIGRvIG5vdCBoYXZlIGhpZ2gtcGVyZm9ybWFuY2UgYmluYXJ5IHVuZGVyIHRoZSAkUEFUSCB0aGF0IHdpbGwgcG9pbnQgdG8gaXQuCltjcmlvLnJ1bnRpbWUucnVudGltZXMuaGlnaC1wZXJmb3JtYW5jZV0KcnVudGltZV9wYXRoID0gIi9iaW4vcnVuYyIKcnVudGltZV90eXBlID0gIm9jaSIKcnVudGltZV9yb290ID0gIi9ydW4vcnVuYyIKYWxsb3dlZF9hbm5vdGF0aW9ucyA9IFsiY3B1LWxvYWQtYmFsYW5jaW5nLmNyaW8uaW8iLCAiY3B1LXF1b3RhLmNyaW8uaW8iLCAiaXJxLWxvYWQtYmFsYW5jaW5nLmNyaW8uaW8iXQo= + verification: {} + group: {} + mode: 420 + path: /etc/crio/crio.conf.d/99-runtimes.conf + user: {} + - contents: + source: data:text/plain;charset=utf-8;base64,U1VCU1lTVEVNPT0ibmV0IiwgQUNUSU9OPT0iYWRkIiwgRU5We0lEX0JVU30hPSJwY2kiLCBUQUcrPSJzeXN0ZW1kIiwgRU5We1NZU1RFTURfV0FOVFN9PSJ1cGRhdGUtcnBzQCVrLnNlcnZpY2UiCg== + verification: {} + group: {} + mode: 420 + path: /etc/udev/rules.d/99-netdev-rps.rules + user: {} systemd: units: - - contents: | - [Unit] - Description=Hugepages-1048576kB allocation on the node 0 - Before=kubelet.service + - contents: | + [Unit] + Description=Hugepages-1048576kB allocation on the node 0 + Before=kubelet.service - [Service] - Environment=HUGEPAGES_COUNT=1 - Environment=HUGEPAGES_SIZE=1048576 - Environment=NUMA_NODE=0 - Type=oneshot - RemainAfterExit=true - ExecStart=/usr/local/bin/hugepages-allocation.sh + [Service] + Environment=HUGEPAGES_COUNT=1 + Environment=HUGEPAGES_SIZE=1048576 + Environment=NUMA_NODE=0 + Type=oneshot + RemainAfterExit=true + ExecStart=/usr/local/bin/hugepages-allocation.sh - [Install] - WantedBy=multi-user.target - enabled: true - name: hugepages-allocation-1048576kB-NUMA0.service - - contents: | - [Unit] - Description=Sets network devices RPS mask + [Install] + WantedBy=multi-user.target + enabled: true + name: hugepages-allocation-1048576kB-NUMA0.service + - contents: | + [Unit] + Description=Sets network devices RPS mask - [Service] - Type=oneshot - ExecStart=/usr/local/bin/set-rps-mask.sh %i 00000001 - name: update-rps@.service + [Service] + Type=oneshot + ExecStart=/usr/local/bin/set-rps-mask.sh %i 00000001 + name: update-rps@.service extensions: null fips: false kernelArguments: null