LockOSThread causes significant latency

I am trying to achieve “It allows latency-sensitive programs to run in a hot-loop pinned to a thread on an isolated core in order to achieve low latency and jitter.”.
Usually I do this by calling LockOSThread and SetSchedulerAffinity (single CPU), but for some reason this introduces significantly latency spikes (>10ms) compared to running it without pinning it. go trace confirms that the Runner is locked to a single thread. Message handlers are not doing a lot more than setting on a poller diode.
Nothing changes when I:

don't call SetSchedulerAffinity
remove the core from isolcpus
remove the core from nohz_full
remove the core from rcu_nocbs

What is the recommended approach to do this?
type Runner struct {
	commandsDiode diodes.Diode

	pollingEnabled bool

	cpuAffinityManager *cpuaffinity.Manager

	l *logger.Logger
}

func NewRunner(
	pollingEnabled bool,
	cpuAffinityManager *cpuaffinity.Manager,
	l *logger.Logger,
) (*Runner, error) {
	zl := l.With().Str("topic", "SonicRunner").Logger()
	l = &logger.Logger{Logger: &zl}

	commandsDiode := diodes.NewPoller(diodes.NewManyToOne(2048, diodes.AlertFunc(func(missed int) {
		l.Error().Msgf("dropped %d messages", missed)
	})))

	return &Runner{
		commandsDiode,
		pollingEnabled,
		cpuAffinityManager,
		l,
	}, nil
}

func (r *Runner) Run() {
	ioc := sonic.MustIO()
	defer ioc.Close()

	if r.pollingEnabled {
		runtime.LockOSThread()
		defer runtime.UnlockOSThread()

		if err := r.cpuAffinityManager.AcquireCPU(); err != nil {
			switch {
			case errors.Is(err, cpuaffinity.ErrOSNotSupported):
				r.l.Info().Err(err).Msgf("could not acquire CPU affinity")
			default:
				r.l.Fatal().Err(err).Msgf("could not acquire CPU affinity")
			}
		}

		defer func() {
			if err := r.cpuAffinityManager.ReleaseCPU(); err != nil {
				r.l.Error().Err(err).Msgf("could not release CPU affinity")
			}
		}()
	}

	i := 0

	for {
		i += 1

		if i%1000 == 0 {
			r.processCommands(ioc)

			i = 0
		}

		if _, err := ioc.PollOne(); err != nil && !errors.Is(err, sonicerrors.ErrTimeout) {
			r.l.Error().Err(err).Msg("could not poll")
		}
	}
}

func (r *Runner) CreateStream(url string, resultCh chan interface{}) {
	r.commandsDiode.Set(diodes.GenericDataType(newCreateStreamCommand(url, resultCh)))
}

func (r *Runner) ReadStream(stream *websocket.WebsocketStream, onRead websocket.AsyncMessageHandler, b []byte) {
	r.commandsDiode.Set(diodes.GenericDataType(newReadStreamCommand(stream, onRead, b)))
}

func (r *Runner) CloseStream(s *websocket.WebsocketStream, resultCh chan interface{}) {
	r.commandsDiode.Set(diodes.GenericDataType(newCloseStreamCommand(s, resultCh)))
}

func (r *Runner) processCommands(ioc *sonic.IO) {
	// read channel may be notified once for multiple messages if we can't keep up
	for {
		p, ok := r.commandsDiode.TryNext()
		if !ok {
			break
		}

		c := (*command)(p)

		switch c.commandType {
		case commandTypeCreateStream:
			r.processCreateStreamCommand(ioc, c)
		case commandTypeReadStream:
			r.processReadStreamCommand(c)
		case commandTypeCloseStream:
			r.processCloseStreamCommand(c)
		default:
			panic("unhandled default case")
		}
	}
}

func (r *Runner) processCreateStreamCommand(ioc *sonic.IO, c *command) {
	stream, err := websocket.NewWebsocketStream(ioc, &tls.Config{}, websocket.RoleClient)
	if err != nil {
		c.resultCh <- fmt.Errorf("could not create websocket stream: %w", err)
		return
	}

	stream.AsyncHandshake(c.url, func(err error) {
		if err != nil {
			c.resultCh <- fmt.Errorf("could not handshake stream: %w", err)
			return
		}

		c.resultCh <- stream
	})
}

func (r *Runner) processReadStreamCommand(c *command) {
	c.stream.AsyncNextMessage(c.b, c.onRead)
}

func (r *Runner) processCloseStreamCommand(c *command) {
	c.stream.AsyncClose(1000, "", func(err error) {
		if err != nil {
			c.resultCh <- fmt.Errorf("could not close stream: %w", err)
			return
		}

		c.resultCh <- nil
	})
}

It seems that the issue is that the scheduler is creating a new thread for every syscall in order to comply with GOMAXPROCS. I believe using RawSyscall could solve the issue.

 Also, how do you measure the latency? And what is the value of GOMAXPROCS? Posting some more details and also uname -a would help me look into this.
Wrt to RawSyscall and Syscall, the difference is that the later tells the runtime it entered into a syscall which might be blocking. The former doesn't. The runtime then knows to yield the goroutine if there's other work to be done, like in another goroutine (which might spawn another thread since the goroutine that invoked Syscall is pinned to its thread, so it cannot be reused).
We could use RawSyscall but only for non-blocking ioc calls like PollOne. Otherwise, if we do ioc.Run, the whole program hangs. So I preferred Syscall as its the more general solution.

Garbage collection is off. I am measuring latency by comparing receive time with time in received messages. There is no way that the measured latency is minimal.
GOMAXPROCS=11
uname -a=Linux <IP> #1 SMP PREEMPT_DYNAMIC Tue Jun 18 14:57:56 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
running on core with isolcpus=domain,managed_irq and nohz_full

are the times generated by the same clock? Do you have hyperthreading disabled?

Thanks for your replies. I created a relatively simple script with which you can reproduce the issue.
Environment
instance type: c6i.xlarge
command: GOMAXPROCS=4 go run runner.go
If you comment the infinite loop out, then you will barely see any log messages compared to when the infinite loop is running is parallel.
Something unexpected that I noticed is that when the infinite loop is not running, then there are still 2 cores running at 100% CPU.
package main

import (
	"crypto/tls"
	"fmt"
	"github.com/talostrading/sonic"
	"github.com/talostrading/sonic/codec/websocket"
	"github.com/tidwall/gjson"
	"golang.org/x/sys/unix"
	"os"
	"os/signal"
	"runtime"
	"runtime/debug"
	"syscall"
	"time"
)

var subscriptionMessage = []byte(
	`
{
  "id": 1,
  "method": "SUBSCRIBE",
  "params": [ "btcusdt@bookTicker", "ethusdt@bookTicker", "solusdt@bookTicker", "tiausdt@bookTicker", "wifusdt@bookTicker", "btcusdt@trade", "ethusdt@trade", "solusdt@trade", "tiausdt@trade", "wifusdt@trade", "dogeusdt@bookTicker", "dogeusdt@trade", "xrpusdt@bookTicker", "xrpusdt@trade" ]
}
`)

var b = make([]byte, 512*1024) // contains websocket payloads

func run(stream websocket.Stream) {
	stream.AsyncHandshake("wss://fstream-mm.binance.com/ws", func(err error) {
		onHandshake(err, stream)
	})
}

func onHandshake(err error, stream websocket.Stream) {
	if err != nil {
		panic(err)
	} else {
		stream.AsyncWrite(subscriptionMessage, websocket.TypeText, func(err error) {
			onWrite(err, stream)
		})
	}
}

func onWrite(err error, stream websocket.Stream) {
	if err != nil {
		panic(err)
	} else {
		readLoop(stream)
	}
}

func readLoop(stream websocket.Stream) {
	i := 0

	var onRead websocket.AsyncMessageHandler
	onRead = func(err error, n int, _ websocket.MessageType) {
		i += 1

		if err != nil {
			panic(err)
		} else {
			b = b[:n]

			timestamp := gjson.GetBytes(b, "T")

			if timestamp.Exists() {
				latency := float64(time.Now().UnixMicro()-timestamp.Int()*1000) / 1000

				if latency > 4 {
					fmt.Println(fmt.Sprintf("%v", latency))
				}
			}

			if i%10000 == 0 {
				fmt.Println(string(b))
			}

			b = b[:cap(b)]

			stream.AsyncNextMessage(b, onRead)
		}
	}
	stream.AsyncNextMessage(b, onRead)
}

func pollSonic() {
	runtime.LockOSThread()
	acquireCPU(2)

	ioc := sonic.MustIO()
	defer ioc.Close()

	stream, err := websocket.NewWebsocketStream(ioc, &tls.Config{}, websocket.RoleClient)
	if err != nil {
		panic(err)
	}

	run(stream)

	for {
		ioc.PollOne()
	}
}

func infiniteLoop() {
	runtime.LockOSThread()
	acquireCPU(1)

	for {

	}
}

func acquireCPU(selectedCPU int) error {
	// Create a new CPUSet with only the selected CPU
	var set unix.CPUSet
	set.Zero()
	set.Set(selectedCPU)

	// if pid is zero, then the calling thread is used
	if err := unix.SchedSetaffinity(0, &set); err != nil {
		return fmt.Errorf("failed to set CPU affinity: %v", err)
	}
	return nil
}

func main() {
	debug.SetGCPercent(-1)

	go infiniteLoop()
	go pollSonic()

	interrupt := make(chan os.Signal, 1)
	signal.Notify(interrupt, os.Interrupt)
	signal.Notify(interrupt, syscall.SIGTERM) // used by elastic beanstalk

	<-interrupt
}

I updated the example to log the latency of sonic. See sample of output below
1730465328455: polling took 8.130914ms
1730465328466: polling took 7.692994ms
1730465328686: polling took 3.399347ms
1730465329295: polling took 7.014334ms
1730465331119: polling took 10.007972ms
1730465331240: polling took 9.901938ms
1730465331272: polling took 8.764957ms
1730465331467: polling took 4.537561ms
1730465332139: polling took 9.140432ms
1730465332149: polling took 9.129181ms
1730465332167: polling took 1.685062ms
1730465332174: polling took 4.766643ms
1730465332203: polling took 5.688057ms
1730465334053: polling took 5.71543ms
1730465334472: polling took 4.107035ms
1730465335541: polling took 7.528927ms
1730465335792: polling took 7.437317ms
1730465335892: polling took 7.912448ms
1730465335940: polling took 9.614822ms
1730465335954: polling took 5.952429ms
1730465335977: polling took 3.784135ms
1730465336107: polling took 3.313327ms
1730465336814: polling took 10.878071ms
1730465337603: polling took 7.86693ms
1730465337613: polling took 8.837325ms
1730465337622: polling took 9.792908ms
1730465337642: polling took 9.703468ms
1730465337715: polling took 7.00854ms
1730465337774: polling took 2.599741ms
1730465337780: polling took 7.543463ms
1730465337791: polling took 6.078905ms
1730465338617: polling took 7.140351ms
1730465338683: polling took 1.923554ms
1730465338754: polling took 1.857364ms
1730465338756: polling took 9.861765ms
1730465338853: polling took 2.846755ms
1730465339048: polling took 4.335415ms
1730465339055: polling took 7.245881ms
1730465339067: polling took 4.676037ms
1730465339205: polling took 8.121168ms
1730465339214: polling took 8.77062ms
1730465339398: polling took 5.76206ms
1730465340655: polling took 8.31452ms
1730465340725: polling took 8.43871ms
1730465342176: polling took 8.336151ms
1730465342186: polling took 8.574582ms
1730465342196: polling took 8.320251ms
1730465342247: polling took 8.008974ms
1730465342272: polling took 2.783847ms
1730465342333: polling took 2.456018ms
1730465342336: polling took 9.471602ms
1730465342382: polling took 3.612966ms
1730465342720: polling took 8.322607ms

Is it using kqueue or epoll?

Ran an example similar to yours on my mac. One goroutine locked to a thread, running sonic with PollOne. Another one also locked running an infinite loop. Sonic max latencies are never higher than 100 micros like this.
Please paste the full kernel settings as well, and let me know whether you use kqueue or epoll. I'll test this on a Linux machine soon to make sure. For now I think this has to do with the way the machine is setup, but unsure, need more info.

Really appreciate your help. See samples of strace output of the 2 busy cores below:
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [{events=EPOLLIN, data={u32=9573552, u64=824643294384}}], 128, 0) = 1
epoll_ctl(3, EPOLL_CTL_DEL, 8, NULL)    = 0
read(8, "\27\3\3\0\252\0\0\0\0\0\0E\251 (^n\302hr\327D\10#\204N7\205Y%<\302"..., 27264) = 175
epoll_ctl(3, EPOLL_CTL_ADD, 8, {events=EPOLLIN, data={u32=9573552, u64=824643294384}}) = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0
epoll_wait(3, [], 128, 0)               = 0

rt_sigreturn({mask=[]})                 = 0
futex(0xc000081148, FUTEX_WAKE_PRIVATE, 1) = 1
--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=3298, si_uid=0} ---
rt_sigreturn({mask=[]})                 = 0
futex(0xc000081148, FUTEX_WAKE_PRIVATE, 1) = 1
--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=3298, si_uid=0} ---
rt_sigreturn({mask=[]})                 = 0
futex(0xc000081148, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xc000080948, FUTEX_WAKE_PRIVATE, 1) = 1
--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=3298, si_uid=0} ---
rt_sigreturn({mask=[]})                 = 0
futex(0xc000200948, FUTEX_WAKE_PRIVATE, 1) = 1
--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=3298, si_uid=0} ---
rt_sigreturn({mask=[]})                 = 0

Sysctl
[root@ip-10-2-35-114 ~]# sysctl -a
abi.vsyscall32 = 1
crypto.fips_enabled = 0
crypto.fips_name = Amazon Linux 2023 Kernel Cryptographic API
crypto.fips_version = 6.1.112-122.189.amzn2023.x86_64
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.hpet.max-user-freq = 64
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.tty.ldisc_autoload = 0
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.binfmt_misc.status = enabled
fs.dentry-state = 35161	16111	45	0	1374	0
fs.dir-notify-enable = 1
fs.epoll.max_user_watches = 1756360
fs.fanotify.max_queued_events = 16384
fs.fanotify.max_user_groups = 128
fs.fanotify.max_user_marks = 64735
fs.file-max =<PHONE_NUMBER>854775807
fs.file-nr = 1408	0<PHONE_NUMBER>854775807
fs.inode-nr = 33751	394
fs.inode-state = 33751	394	0	0	0	0	0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 60835
fs.lease-break-time = 45
fs.leases-enable = 1
fs.mount-max = 100000
fs.mqueue.msg_default = 10
fs.mqueue.msg_max = 10
fs.mqueue.msgsize_default = 8192
fs.mqueue.msgsize_max = 8192
fs.mqueue.queues_max = 256
fs.nr_open =<PHONE_NUMBER>
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.pipe-max-size = 1048576
fs.pipe-user-pages-hard = 0
fs.pipe-user-pages-soft = 16384
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 1
fs.protected_symlinks = 1
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 0
fs.quota.writes = 0
fs.suid_dumpable = 0
fs.xfs.error_level = 3
fs.xfs.filestream_centisecs = 3000
fs.xfs.inherit_noatime = 1
fs.xfs.inherit_nodefrag = 1
fs.xfs.inherit_nodump = 1
fs.xfs.inherit_nosymlinks = 0
fs.xfs.inherit_sync = 1
fs.xfs.irix_sgid_inherit = 0
fs.xfs.irix_symlink_mode = 0
fs.xfs.panic_mask = 0
fs.xfs.rotorstep = 1
fs.xfs.speculative_cow_prealloc_lifetime = 300
fs.xfs.speculative_prealloc_lifetime = 300
fs.xfs.stats_clear = 0
fs.xfs.xfssyncd_centisecs = 3000
kernel.acct = 4	2	30
kernel.acpi_video_flags = 0
kernel.arch = x86_64
kernel.auto_msgmni = 0
kernel.bootloader_type = 6
kernel.bootloader_version = 38
kernel.bpf_stats_enabled = 0
kernel.cad_pid = 1
kernel.cap_last_cap = 40
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 16
kernel.core_uses_pid = 1
kernel.ctrl-alt-del = 0
kernel.dmesg_restrict = 1
kernel.domainname = (none)
kernel.firmware_config.force_sysfs_fallback = 0
kernel.firmware_config.ignore_sysfs_fallback = 0
kernel.ftrace_dump_on_oops = 0
kernel.ftrace_enabled = 1
kernel.hostname =
kernel.hotplug = /sbin/hotplug
kernel.hung_task_all_cpu_backtrace = 0
kernel.hung_task_check_count = 4194304
kernel.hung_task_check_interval_secs = 0
kernel.hung_task_panic = 0
kernel.hung_task_timeout_secs = 120
kernel.hung_task_warnings = 10
kernel.io_delay_type = 0
kernel.kexec_load_disabled = 0
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.persistent_keyring_expiry = 259200
kernel.keys.root_maxbytes = 25000000
kernel.keys.root_maxkeys = 1000000
kernel.kptr_restrict = 0
kernel.latencytop = 0
kernel.max_lock_depth = 1024
kernel.max_rcu_stall_to_panic = 0
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0
kernel.msg_next_id = -1
kernel.msgmax = 8192
kernel.msgmnb = 16384
kernel.msgmni = 32000
kernel.ngroups_max = 65536
kernel.nmi_watchdog = 0
kernel.ns_last_pid = 3453
kernel.numa_balancing = 0
kernel.numa_balancing_promote_rate_limit_MBps = 65536
kernel.oops_all_cpu_backtrace = 0
kernel.oops_limit = 10000
kernel.osrelease = 6.1.112-122.189.amzn2023.x86_64
kernel.ostype = Linux
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.panic = 5
kernel.panic_on_io_nmi = 0
kernel.panic_on_oops = 1
kernel.panic_on_rcu_stall = 0
kernel.panic_on_unrecovered_nmi = 0
kernel.panic_on_warn = 0
kernel.panic_print = 0
kernel.perf_cpu_time_max_percent = 25
kernel.perf_event_max_contexts_per_stack = 8
kernel.perf_event_max_sample_rate = 100000
kernel.perf_event_max_stack = 127
kernel.perf_event_mlock_kb = 516
kernel.perf_event_paranoid = 2
kernel.pid_max = 4194304
kernel.poweroff_cmd = /sbin/poweroff
kernel.print-fatal-signals = 0
kernel.printk = 8	4	1	7
kernel.printk_delay = 0
kernel.printk_devkmsg = on
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.pty.max = 4096
kernel.pty.nr = 4
kernel.pty.reserve = 1024
kernel.random.boot_id = cf72862a-da78-4328-a3ff-e6c2d090e30d
kernel.random.entropy_avail = 256
kernel.random.poolsize = 256
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = f8a85fba-6ac4-48ca-8e15-b25c87152159
kernel.random.write_wakeup_threshold = 256
kernel.randomize_va_space = 2
kernel.real-root-dev = 0
kernel.sched_autogroup_enabled = 1
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_deadline_period_max_us = 4194304
kernel.sched_deadline_period_min_us = 100
kernel.sched_rr_timeslice_ms = 100
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_schedstats = 0
kernel.seccomp.actions_avail = kill_process kill_thread trap errno user_notif trace log allow
kernel.seccomp.actions_logged = kill_process kill_thread trap errno user_notif trace log
kernel.sem = 32000<PHONE_NUMBER>	500	32000
kernel.sem_next_id = -1
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall =<PHONE_NUMBER>3692774399
kernel.shmmax =<PHONE_NUMBER>3692774399
kernel.shmmni = 4096
kernel.soft_watchdog = 1
kernel.softlockup_all_cpu_backtrace = 0
kernel.softlockup_panic = 0
kernel.split_lock_mitigate = 1
kernel.stack_tracer_enabled = 0
kernel.sysctl_writes_strict = 1
kernel.sysrq = 16
kernel.tainted = 0
kernel.task_delayacct = 0
kernel.threads-max = 61640
kernel.timer_migration = 1
kernel.traceoff_on_warning = 0
kernel.tracepoint_printk = 0
kernel.unknown_nmi_panic = 0
kernel.unprivileged_bpf_disabled = 1
kernel.usermodehelper.bset =<PHONE_NUMBER>	511
kernel.usermodehelper.inheritable =<PHONE_NUMBER>	511
kernel.version = #1 SMP PREEMPT_DYNAMIC Tue Oct  8 17:02:11 UTC 2024
kernel.warn_limit = 0
kernel.watchdog = 1
kernel.watchdog_cpumask = 0-3
kernel.watchdog_thresh = 10
kernel.yama.ptrace_scope = 0
net.core.bpf_jit_enable = 1
net.core.bpf_jit_harden = 0
net.core.bpf_jit_kallsyms = 1
net.core.bpf_jit_limit = 528482304
net.core.busy_poll = 0
net.core.busy_read = 0
net.core.default_qdisc = fq_codel
net.core.dev_weight = 64
net.core.dev_weight_rx_bias = 1
net.core.dev_weight_tx_bias = 1
net.core.devconf_inherit_init_net = 0
net.core.fb_tunnels_only_for_init_net = 0
net.core.flow_limit_cpu_bitmap = 0
net.core.flow_limit_table_len = 4096
net.core.gro_normal_batch = 8
net.core.high_order_alloc_disable = 0
net.core.max_skb_frags = 17
net.core.mem_pcpu_rsv = 256
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_budget = 300
net.core.netdev_budget_usecs = 20000
net.core.netdev_max_backlog = 1000
net.core.netdev_rss_key = 9c:7b:5f:c9:42:b0:64:07:1c:f3:82:3d:c8:72:95:e1:a4:16:1c:dd:ed:14:5f:c5:b6:d1:cc:4e:bf:90:b6:0e:b4:96:e7:37:32:c8:7c:55:16:18:fa:c2:9b:2c:c1:c8:46:1f:51:a1
net.core.netdev_tstamp_prequeue = 1
net.core.netdev_unregister_timeout_secs = 10
net.core.optmem_max = 81920
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.rps_sock_flow_entries = 0
net.core.skb_defer_max = 64
net.core.somaxconn = 4096
net.core.tstamp_allow_data = 1
net.core.txrehash = 1
net.core.warnings = 0
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1
net.ipv4.cipso_cache_bucket_size = 10
net.ipv4.cipso_cache_enable = 1
net.ipv4.cipso_rbm_optfmt = 0
net.ipv4.cipso_rbm_strictvalid = 1
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_evict_nocarrier = 1
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bc_forwarding = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.drop_gratuitous_arp = 0
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.ignore_routes_with_linkdown = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_evict_nocarrier = 1
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bc_forwarding = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.drop_gratuitous_arp = 0
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.ignore_routes_with_linkdown = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.enp39s0.accept_local = 0
net.ipv4.conf.enp39s0.accept_redirects = 1
net.ipv4.conf.enp39s0.accept_source_route = 0
net.ipv4.conf.enp39s0.arp_accept = 0
net.ipv4.conf.enp39s0.arp_announce = 0
net.ipv4.conf.enp39s0.arp_evict_nocarrier = 1
net.ipv4.conf.enp39s0.arp_filter = 0
net.ipv4.conf.enp39s0.arp_ignore = 0
net.ipv4.conf.enp39s0.arp_notify = 0
net.ipv4.conf.enp39s0.bc_forwarding = 0
net.ipv4.conf.enp39s0.bootp_relay = 0
net.ipv4.conf.enp39s0.disable_policy = 0
net.ipv4.conf.enp39s0.disable_xfrm = 0
net.ipv4.conf.enp39s0.drop_gratuitous_arp = 0
net.ipv4.conf.enp39s0.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.enp39s0.force_igmp_version = 0
net.ipv4.conf.enp39s0.forwarding = 0
net.ipv4.conf.enp39s0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.enp39s0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.enp39s0.ignore_routes_with_linkdown = 0
net.ipv4.conf.enp39s0.log_martians = 0
net.ipv4.conf.enp39s0.mc_forwarding = 0
net.ipv4.conf.enp39s0.medium_id = 0
net.ipv4.conf.enp39s0.promote_secondaries = 1
net.ipv4.conf.enp39s0.proxy_arp = 0
net.ipv4.conf.enp39s0.proxy_arp_pvlan = 0
net.ipv4.conf.enp39s0.route_localnet = 0
net.ipv4.conf.enp39s0.rp_filter = 2
net.ipv4.conf.enp39s0.secure_redirects = 1
net.ipv4.conf.enp39s0.send_redirects = 1
net.ipv4.conf.enp39s0.shared_media = 1
net.ipv4.conf.enp39s0.src_valid_mark = 0
net.ipv4.conf.enp39s0.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_evict_nocarrier = 1
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bc_forwarding = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.drop_gratuitous_arp = 0
net.ipv4.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.ignore_routes_with_linkdown = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 2
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.fib_multipath_hash_fields = 7
net.ipv4.fib_multipath_hash_policy = 0
net.ipv4.fib_multipath_use_neigh = 0
net.ipv4.fib_notify_on_flag_change = 0
net.ipv4.fib_sync_mem = 524288
net.ipv4.fwmark_reflect = 0
net.ipv4.icmp_echo_enable_probe = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_msgs_burst = 50
net.ipv4.icmp_msgs_per_sec = 1000
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 6168
net.ipv4.igmp_link_local_mcast_reports = 1
net.ipv4.igmp_max_memberships = 20
net.ipv4.igmp_max_msf = 10
net.ipv4.igmp_qrv = 2
net.ipv4.inet_peer_maxttl = 600
net.ipv4.inet_peer_minttl = 120
net.ipv4.inet_peer_threshold = 65664
net.ipv4.ip_autobind_reuse = 0
net.ipv4.ip_default_ttl = 127
net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 1
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_local_port_range = 32768	60999
net.ipv4.ip_local_reserved_ports =
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.ip_nonlocal_bind = 0
net.ipv4.ip_unprivileged_port_start = 1024
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 0
net.ipv4.ipfrag_time = 30
net.ipv4.neigh.default.anycast_delay = 100
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.delay_first_probe_time = 5
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.gc_thresh1 = 0
net.ipv4.neigh.default.gc_thresh2 = 15360
net.ipv4.neigh.default.gc_thresh3 = 16384
net.ipv4.neigh.default.interval_probe_time_ms = 5000
net.ipv4.neigh.default.locktime = 100
net.ipv4.neigh.default.mcast_resolicit = 0
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.neigh.default.proxy_delay = 80
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.neigh.default.unres_qlen = 101
net.ipv4.neigh.default.unres_qlen_bytes = 212992
net.ipv4.neigh.enp39s0.anycast_delay = 100
net.ipv4.neigh.enp39s0.app_solicit = 0
net.ipv4.neigh.enp39s0.base_reachable_time_ms = 30000
net.ipv4.neigh.enp39s0.delay_first_probe_time = 5
net.ipv4.neigh.enp39s0.gc_stale_time = 60
net.ipv4.neigh.enp39s0.interval_probe_time_ms = 5000
net.ipv4.neigh.enp39s0.locktime = 100
net.ipv4.neigh.enp39s0.mcast_resolicit = 0
net.ipv4.neigh.enp39s0.mcast_solicit = 3
net.ipv4.neigh.enp39s0.proxy_delay = 80
net.ipv4.neigh.enp39s0.proxy_qlen = 64
net.ipv4.neigh.enp39s0.retrans_time_ms = 1000
net.ipv4.neigh.enp39s0.ucast_solicit = 3
net.ipv4.neigh.enp39s0.unres_qlen = 101
net.ipv4.neigh.enp39s0.unres_qlen_bytes = 212992
net.ipv4.neigh.lo.anycast_delay = 100
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.interval_probe_time_ms = 5000
net.ipv4.neigh.lo.locktime = 100
net.ipv4.neigh.lo.mcast_resolicit = 0
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.lo.proxy_delay = 80
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.unres_qlen = 101
net.ipv4.neigh.lo.unres_qlen_bytes = 212992
net.ipv4.nexthop_compat_mode = 1
net.ipv4.ping_group_range = 0<PHONE_NUMBER>
net.ipv4.raw_l3mdev_accept = 1
net.ipv4.route.error_burst = 500
net.ipv4.route.error_cost = 100
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_thresh = -1
net.ipv4.route.gc_timeout = 300
net.ipv4.route.max_size =<PHONE_NUMBER>
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.redirect_load = 2
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_silence = 2048
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_allowed_congestion_control = reno cubic
net.ipv4.tcp_app_win = 31
net.ipv4.tcp_autocorking = 1
net.ipv4.tcp_available_congestion_control = reno cubic
net.ipv4.tcp_available_ulp = mptcp
net.ipv4.tcp_base_mss = 1024
net.ipv4.tcp_challenge_ack_limit =<PHONE_NUMBER>
net.ipv4.tcp_child_ehash_entries = 0
net.ipv4.tcp_comp_sack_delay_ns = 1000000
net.ipv4.tcp_comp_sack_nr = 44
net.ipv4.tcp_comp_sack_slack_ns = 100000
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_early_demux = 1
net.ipv4.tcp_early_retrans = 3
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_ecn_fallback = 1
net.ipv4.tcp_ehash_entries = 65536
net.ipv4.tcp_fack = 0
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_fastopen_blackhole_timeout_sec = 0
net.ipv4.tcp_fastopen_key = 00000000-00000000-00000000-00000000
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_frto = 2
net.ipv4.tcp_fwmark_accept = 0
net.ipv4.tcp_invalid_ratelimit = 500
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_l3mdev_accept = 0
net.ipv4.tcp_limit_output_bytes = 1048576
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_max_reordering = 300
net.ipv4.tcp_max_syn_backlog = 512
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_mem = 91272	121697	182544
net.ipv4.tcp_migrate_req = 0
net.ipv4.tcp_min_rtt_wlen = 300
net.ipv4.tcp_min_snd_mss = 48
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probe_floor = 48
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_no_ssthresh_metrics_save = 1
net.ipv4.tcp_notsent_lowat =<PHONE_NUMBER>
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_pacing_ca_ratio = 120
net.ipv4.tcp_pacing_ss_ratio = 200
net.ipv4.tcp_probe_interval = 600
net.ipv4.tcp_probe_threshold = 8
net.ipv4.tcp_recovery = 1
net.ipv4.tcp_reflect_tos = 0
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_retrans_collapse = 1
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rmem = 4096	131072	6291456
net.ipv4.tcp_sack = 1
net.ipv4.tcp_shrink_window = 0
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_stdurg = 0
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tso_rtt_log = 9
net.ipv4.tcp_tso_win_divisor = 3
net.ipv4.tcp_tw_reuse = 2
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096	20480	4194304
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.udp_early_demux = 1
net.ipv4.udp_l3mdev_accept = 0
net.ipv4.udp_mem = 182544	243394	365088
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.xfrm4_gc_thresh = 32768
net.ipv6.anycast_src_echo_reply = 0
net.ipv6.auto_flowlabels = 1
net.ipv6.bindv6only = 0
net.ipv6.calipso_cache_bucket_size = 10
net.ipv6.calipso_cache_enable = 1
net.ipv6.conf.all.accept_dad = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
net.ipv6.conf.all.accept_ra_min_lft = 0
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_untracked_na = 0
net.ipv6.conf.all.addr_gen_mode = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.all.drop_unsolicited_na = 0
net.ipv6.conf.all.enhanced_dad = 1
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.ioam6_enabled = 0
net.ipv6.conf.all.ioam6_id = 65535
net.ipv6.conf.all.ioam6_id_wide =<PHONE_NUMBER>
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_evict_nocarrier = 1
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.ndisc_tclass = 0
net.ipv6.conf.all.optimistic_dad = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.ra_defrtr_metric = 1024
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_probe_interval = 60
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitation_max_interval = 3600
net.ipv6.conf.all.router_solicitations = -1
net.ipv6.conf.all.rpl_seg_enabled = 0
net.ipv6.conf.all.seg6_enabled = 0
net.ipv6.conf.all.seg6_require_hmac = 0
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_oif_addrs_only = 0
net.ipv6.conf.all.use_optimistic = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_from_local = 0
net.ipv6.conf.default.accept_ra_min_hop_limit = 1
net.ipv6.conf.default.accept_ra_min_lft = 0
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.default.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_untracked_na = 0
net.ipv6.conf.default.addr_gen_mode = 0
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.disable_policy = 0
net.ipv6.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.default.drop_unsolicited_na = 0
net.ipv6.conf.default.enhanced_dad = 1
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.force_tllao = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.ignore_routes_with_linkdown = 0
net.ipv6.conf.default.ioam6_enabled = 0
net.ipv6.conf.default.ioam6_id = 65535
net.ipv6.conf.default.ioam6_id_wide =<PHONE_NUMBER>
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.ndisc_evict_nocarrier = 1
net.ipv6.conf.default.ndisc_notify = 0
net.ipv6.conf.default.ndisc_tclass = 0
net.ipv6.conf.default.optimistic_dad = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.ra_defrtr_metric = 1024
net.ipv6.conf.default.regen_max_retry = 3
net.ipv6.conf.default.router_probe_interval = 60
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitation_max_interval = 3600
net.ipv6.conf.default.router_solicitations = -1
net.ipv6.conf.default.rpl_seg_enabled = 0
net.ipv6.conf.default.seg6_enabled = 0
net.ipv6.conf.default.seg6_require_hmac = 0
net.ipv6.conf.default.suppress_frag_ndisc = 1
net.ipv6.conf.default.temp_prefered_lft = 86400
net.ipv6.conf.default.temp_valid_lft = 604800
net.ipv6.conf.default.use_oif_addrs_only = 0
net.ipv6.conf.default.use_optimistic = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.enp39s0.accept_dad = 1
net.ipv6.conf.enp39s0.accept_ra = 0
net.ipv6.conf.enp39s0.accept_ra_defrtr = 1
net.ipv6.conf.enp39s0.accept_ra_from_local = 0
net.ipv6.conf.enp39s0.accept_ra_min_hop_limit = 1
net.ipv6.conf.enp39s0.accept_ra_min_lft = 0
net.ipv6.conf.enp39s0.accept_ra_mtu = 1
net.ipv6.conf.enp39s0.accept_ra_pinfo = 1
net.ipv6.conf.enp39s0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.enp39s0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.enp39s0.accept_ra_rtr_pref = 1
net.ipv6.conf.enp39s0.accept_redirects = 1
net.ipv6.conf.enp39s0.accept_source_route = 0
net.ipv6.conf.enp39s0.accept_untracked_na = 0
net.ipv6.conf.enp39s0.addr_gen_mode = 0
net.ipv6.conf.enp39s0.autoconf = 1
net.ipv6.conf.enp39s0.dad_transmits = 0
net.ipv6.conf.enp39s0.disable_ipv6 = 0
net.ipv6.conf.enp39s0.disable_policy = 0
net.ipv6.conf.enp39s0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.enp39s0.drop_unsolicited_na = 0
net.ipv6.conf.enp39s0.enhanced_dad = 1
net.ipv6.conf.enp39s0.force_mld_version = 0
net.ipv6.conf.enp39s0.force_tllao = 0
net.ipv6.conf.enp39s0.forwarding = 0
net.ipv6.conf.enp39s0.hop_limit = 64
net.ipv6.conf.enp39s0.ignore_routes_with_linkdown = 0
net.ipv6.conf.enp39s0.ioam6_enabled = 0
net.ipv6.conf.enp39s0.ioam6_id = 65535
net.ipv6.conf.enp39s0.ioam6_id_wide =<PHONE_NUMBER>
net.ipv6.conf.enp39s0.keep_addr_on_down = 0
net.ipv6.conf.enp39s0.max_addresses = 16
net.ipv6.conf.enp39s0.max_desync_factor = 600
net.ipv6.conf.enp39s0.mc_forwarding = 0
net.ipv6.conf.enp39s0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.enp39s0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.enp39s0.mtu = 9001
net.ipv6.conf.enp39s0.ndisc_evict_nocarrier = 1
net.ipv6.conf.enp39s0.ndisc_notify = 0
net.ipv6.conf.enp39s0.ndisc_tclass = 0
net.ipv6.conf.enp39s0.optimistic_dad = 0
net.ipv6.conf.enp39s0.proxy_ndp = 0
net.ipv6.conf.enp39s0.ra_defrtr_metric = 1024
net.ipv6.conf.enp39s0.regen_max_retry = 3
net.ipv6.conf.enp39s0.router_probe_interval = 60
net.ipv6.conf.enp39s0.router_solicitation_delay = 1
net.ipv6.conf.enp39s0.router_solicitation_interval = 4
net.ipv6.conf.enp39s0.router_solicitation_max_interval = 3600
net.ipv6.conf.enp39s0.router_solicitations = -1
net.ipv6.conf.enp39s0.rpl_seg_enabled = 0
net.ipv6.conf.enp39s0.seg6_enabled = 0
net.ipv6.conf.enp39s0.seg6_require_hmac = 0
net.ipv6.conf.enp39s0.suppress_frag_ndisc = 1
net.ipv6.conf.enp39s0.temp_prefered_lft = 86400
net.ipv6.conf.enp39s0.temp_valid_lft = 604800
net.ipv6.conf.enp39s0.use_oif_addrs_only = 0
net.ipv6.conf.enp39s0.use_optimistic = 0
net.ipv6.conf.enp39s0.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = -1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_from_local = 0
net.ipv6.conf.lo.accept_ra_min_hop_limit = 1
net.ipv6.conf.lo.accept_ra_min_lft = 0
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.lo.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.accept_source_route = 0
net.ipv6.conf.lo.accept_untracked_na = 0
net.ipv6.conf.lo.addr_gen_mode = 0
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.disable_policy = 0
net.ipv6.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.lo.drop_unsolicited_na = 0
net.ipv6.conf.lo.enhanced_dad = 1
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.force_tllao = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.ignore_routes_with_linkdown = 0
net.ipv6.conf.lo.ioam6_enabled = 0
net.ipv6.conf.lo.ioam6_id = 65535
net.ipv6.conf.lo.ioam6_id_wide =<PHONE_NUMBER>
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.ndisc_evict_nocarrier = 1
net.ipv6.conf.lo.ndisc_notify = 0
net.ipv6.conf.lo.ndisc_tclass = 0
net.ipv6.conf.lo.optimistic_dad = 0
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.ra_defrtr_metric = 1024
net.ipv6.conf.lo.regen_max_retry = 3
net.ipv6.conf.lo.router_probe_interval = 60
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitation_max_interval = 3600
net.ipv6.conf.lo.router_solicitations = -1
net.ipv6.conf.lo.rpl_seg_enabled = 0
net.ipv6.conf.lo.seg6_enabled = 0
net.ipv6.conf.lo.seg6_require_hmac = 0
net.ipv6.conf.lo.suppress_frag_ndisc = 1
net.ipv6.conf.lo.temp_prefered_lft = 86400
net.ipv6.conf.lo.temp_valid_lft = 604800
net.ipv6.conf.lo.use_oif_addrs_only = 0
net.ipv6.conf.lo.use_optimistic = 0
net.ipv6.conf.lo.use_tempaddr = -1
net.ipv6.fib_multipath_hash_fields = 7
net.ipv6.fib_multipath_hash_policy = 0
net.ipv6.fib_notify_on_flag_change = 0
net.ipv6.flowlabel_consistency = 1
net.ipv6.flowlabel_reflect = 0
net.ipv6.flowlabel_state_ranges = 0
net.ipv6.fwmark_reflect = 0
net.ipv6.icmp.echo_ignore_all = 0
net.ipv6.icmp.echo_ignore_anycast = 0
net.ipv6.icmp.echo_ignore_multicast = 0
net.ipv6.icmp.ratelimit = 1000
net.ipv6.icmp.ratemask = 0-1,3-127
net.ipv6.idgen_delay = 1
net.ipv6.idgen_retries = 3
net.ipv6.ioam6_id = 16777215
net.ipv6.ioam6_id_wide =<PHONE_NUMBER>7927935
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 0
net.ipv6.ip6frag_time = 60
net.ipv6.ip_nonlocal_bind = 0
net.ipv6.max_dst_opts_length =<PHONE_NUMBER>
net.ipv6.max_dst_opts_number = 8
net.ipv6.max_hbh_length =<PHONE_NUMBER>
net.ipv6.max_hbh_opts_number = 8
net.ipv6.mld_max_msf = 64
net.ipv6.mld_qrv = 2
net.ipv6.neigh.default.anycast_delay = 100
net.ipv6.neigh.default.app_solicit = 0
net.ipv6.neigh.default.base_reachable_time_ms = 30000
net.ipv6.neigh.default.delay_first_probe_time = 5
net.ipv6.neigh.default.gc_interval = 30
net.ipv6.neigh.default.gc_stale_time = 60
net.ipv6.neigh.default.gc_thresh1 = 0
net.ipv6.neigh.default.gc_thresh2 = 15360
net.ipv6.neigh.default.gc_thresh3 = 16384
net.ipv6.neigh.default.interval_probe_time_ms = 5000
net.ipv6.neigh.default.locktime = 0
net.ipv6.neigh.default.mcast_resolicit = 0
net.ipv6.neigh.default.mcast_solicit = 3
net.ipv6.neigh.default.proxy_delay = 80
net.ipv6.neigh.default.proxy_qlen = 64
net.ipv6.neigh.default.retrans_time_ms = 1000
net.ipv6.neigh.default.ucast_solicit = 3
net.ipv6.neigh.default.unres_qlen = 101
net.ipv6.neigh.default.unres_qlen_bytes = 212992
net.ipv6.neigh.enp39s0.anycast_delay = 100
net.ipv6.neigh.enp39s0.app_solicit = 0
net.ipv6.neigh.enp39s0.base_reachable_time_ms = 30000
net.ipv6.neigh.enp39s0.delay_first_probe_time = 5
net.ipv6.neigh.enp39s0.gc_stale_time = 60
net.ipv6.neigh.enp39s0.interval_probe_time_ms = 5000
net.ipv6.neigh.enp39s0.locktime = 0
net.ipv6.neigh.enp39s0.mcast_resolicit = 0
net.ipv6.neigh.enp39s0.mcast_solicit = 3
net.ipv6.neigh.enp39s0.proxy_delay = 80
net.ipv6.neigh.enp39s0.proxy_qlen = 64
net.ipv6.neigh.enp39s0.retrans_time_ms = 1000
net.ipv6.neigh.enp39s0.ucast_solicit = 3
net.ipv6.neigh.enp39s0.unres_qlen = 101
net.ipv6.neigh.enp39s0.unres_qlen_bytes = 212992
net.ipv6.neigh.lo.anycast_delay = 100
net.ipv6.neigh.lo.app_solicit = 0
net.ipv6.neigh.lo.base_reachable_time_ms = 30000
net.ipv6.neigh.lo.delay_first_probe_time = 5
net.ipv6.neigh.lo.gc_stale_time = 60
net.ipv6.neigh.lo.interval_probe_time_ms = 5000
net.ipv6.neigh.lo.locktime = 0
net.ipv6.neigh.lo.mcast_resolicit = 0
net.ipv6.neigh.lo.mcast_solicit = 3
net.ipv6.neigh.lo.proxy_delay = 80
net.ipv6.neigh.lo.proxy_qlen = 64
net.ipv6.neigh.lo.retrans_time_ms = 1000
net.ipv6.neigh.lo.ucast_solicit = 3
net.ipv6.neigh.lo.unres_qlen = 101
net.ipv6.neigh.lo.unres_qlen_bytes = 212992
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size =<PHONE_NUMBER>
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.route.skip_notify_on_dev_down = 0
net.ipv6.seg6_flowlabel = 0
net.ipv6.xfrm6_gc_thresh = 32768
net.mptcp.add_addr_timeout = 120
net.mptcp.allow_join_initial_addr_port = 1
net.mptcp.checksum_enabled = 0
net.mptcp.enabled = 1
net.mptcp.pm_type = 0
net.mptcp.stale_loss_cnt = 4
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = NONE
net.netfilter.nf_log.2 = NONE
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = NONE
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.netfilter.nf_log_all_netns = 0
net.unix.max_dgram_qlen = 512
sunrpc.max_resvport = 1023
sunrpc.min_resvport = 665
sunrpc.nfs_debug = 0x0000
sunrpc.nfsd_debug = 0x0000
sunrpc.nlm_debug = 0x0000
sunrpc.rpc_debug = 0x0000
sunrpc.tcp_fin_timeout = 15
sunrpc.tcp_max_slot_table_entries = 65536
sunrpc.tcp_slot_table_entries = 2
sunrpc.transports = tcp 1048576
sunrpc.transports = udp 32768
sunrpc.udp_slot_table_entries = 16
user.max_cgroup_namespaces = 30820
user.max_fanotify_groups = 128
user.max_fanotify_marks = 64735
user.max_inotify_instances = 128
user.max_inotify_watches = 60835
user.max_ipc_namespaces = 30820
user.max_mnt_namespaces = 30820
user.max_net_namespaces = 30820
user.max_pid_namespaces = 30820
user.max_time_namespaces = 30820
user.max_user_namespaces = 30820
user.max_uts_namespaces = 30820
vm.admin_reserve_kbytes = 8192
vm.compact_unevictable_allowed = 1
vm.compaction_proactiveness = 20
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200
vm.extfrag_threshold = 500
vm.hugetlb_optimize_vmemmap = 0
vm.hugetlb_shm_group = 0
vm.laptop_mode = 0
vm.legacy_va_layout = 0
vm.lowmem_reserve_ratio = 256	256	32	0	0
vm.max_map_count = 65530
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.min_free_kbytes = 67584
vm.min_slab_ratio = 5
vm.min_unmapped_ratio = 1
vm.mmap_min_addr = 65536
vm.mmap_rnd_bits = 28
vm.mmap_rnd_compat_bits = 8
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
vm.numa_stat = 1
vm.numa_zonelist_order = Node
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.page_lock_unfairness = 5
vm.panic_on_oom = 0
vm.percpu_pagelist_high_fraction = 0
vm.stat_interval = 1
vm.swappiness = 60
vm.unprivileged_userfaultfd = 0
vm.user_reserve_kbytes = 131072
vm.vfs_cache_pressure = 100
vm.watermark_boost_factor = 15000
vm.watermark_scale_factor = 10
vm.zone_reclaim_mode = 0

Problem solved. Initially I was testing on a machine with multi-threading enabled and then I was testing on non-isolated and tickless CPU's. Again, thanks a lot for your help. A question: can Sonic be scaled horizontally by running multiple instances in parallel on the same application?

BTW, what is the value of GOMAXPROCS when you run it on your Mac? The issue seems to only occur with GOMAXPROCS  > 2.

BTW, what is the value of GOMAXPROCS when you run it on your Mac? The issue seems to only occur with GOMAXPROCS > 2. If it helps I can give you access to a machine on AWS where you can reproduce the issue.

I tested everything from 1 to 11 and no issues. Having the machine would make my life easy, my email is<EMAIL_ADDRESS>Let's talk there

I’ve sent you an email to request the public key of a SSH keypair. If you prefer another way to authenticate, then please let me know.

Didn't reach to a solution. Managed to replicate the problem though.
Some notes:

the program above that uses sonic in a goroutine does have huge delays when both goroutines are pinned, but this doesn't seem specific to sonic
I've managed to replicate it, but to a lesser degree, by running two pinned goroutines in a hot loop and tracking that latency:

for {
    start := time.Now()
    if time.Sub(start) > time.Millisecond { ... }
}

The program above did print that the latency is over one millisecond, but way less than your sample.

Indeed, setting GOMAXPROCS=2 solves the issue
Not touching GOMAXPROCS and not locking the non-sonic thread also solves the issue.
GODEBUG=asyncpreemptoff=1 does improve the situation, but still seeing big spikes
perf showed that all interrupts are coming from the network card, so that's good
perf also showed that there's no big scheduling delays (larger than 10micros) for any thread in the program
using runtime/trace is near impossible - the big spikes almost disappear and the traces are so big that they don't display

Given all of the above, I concluded that the spikes most likely have to do with the Go runtime around syscalls. So I tracked all syscalls with perf and caught a few spikes while running it: sudo perf record -e 'syscall:sys_*' -p <pid>. The timestamps are in MONO_TIME: <seconds>.<microseconds>. Had the example sonic program output latencies > 1ms with the same time format for easy tracking. A sample:
sonic:
81001.069759: polling took 8.639419ms

perf syscall trace:
example 60411 [000] 81001.068195:                syscalls:sys_enter_nanosleep: rqtp: 0x7f63b99cdd20, rmtp: 0x00000000
example 60411 [000] 81001.069655:                syscalls:sys_exit_nanosleep: 0x0
(this took 1.5ms)

example 60411 [000] 81001.069659:                syscalls:sys_enter_nanosleep: rqtp: 0x7f63b99cdd20, rmtp: 0x00000000
example 60411 [000] 81001.072398:                syscalls:sys_exit_nanosleep: 0x0
(this took 2.7ms)

example 60411 [000] 81001.072400:                syscalls:sys_enter_nanosleep: rqtp: 0x7f63b99cdd20, rmtp: 0x00000000
example 60411 [000] 81001.077701:                syscalls:sys_exit_nanosleep: 0x0
(this took 5.3ms)

For some reason, the Go runtime invokes nanosleep which yields the execution for at least the specified time (which we cannot see as it's under a pointer, 0x7f63b99cdd20 above), or until a signal is received. This syscall is usually invoked for the non-sonic thread, but sometimes also for the sonic thread, which is odd.
Another odd thing is that I did see is epoll_wait running in the thread that invokes nanosleep. I have no idea why that happens... cannot explain it. From this analysis I simply conclude that even if you tell Go to lock a goroutine to a thread, syscalls made by that locked thread can be run on other threads as well. Super weird.
Do you have an amd64 machine on which you can test under the same kernel settings? It could be a platform specific problem in the runtime.
If not platform-specific, then I think the next step is to replicate it for a simple TCP client and see if it's fixed by bypassing the runtime on each syscall i.e. using RawSyscall everywhere. This means replacing stuff like syscall.Syscall and syscall.Read with syscall.RawSyscall(...).

Thanks for the investigation. How come Talos (and other users) aren’t having the same issue? What are the differences compared to the machine I provided you? Would make my life easy to just move to a setup that works.

The machine is provided you is amd64 as well right?

ah correct, my mind was stuck on the other issue. It is amd64.
What are you trying to achieve in your program? Setting GOMAXPROCS=2 solves the issue for now, would that be enough?

I have a number of goroutines locked and pinned and a number that rely on the scheduler, so setting GOMAXPROCS to the number of locked goroutines would not really solve the issue unfortunately…
Shall I keep the machine online, so you can test more?

I understand. You could also get away with only pinning the sonic goroutine. That would be your hotpath for a trading engine. The rest of the goroutines would be left to the Go scheduler. That's in general how I wrote trading engines before. Communication between goroutines could be done via atomics or channels (although they do use CPU yielding locks).
Unfortunately I don't have a lot of time left to investigate this week, best to not let the machine running. I'll setup a Linux box myself when I have some time to dig a bit deeper and see if moving to RawSyscall helps. Thanks for raising the issue though! It's a usecase I haven't run into before. And as always, I'm amazed with how little control one can have over the Go runtime.

I have created a PR to check whether moving to RawSyscall would help: https://github.com/csdenboer/sonic/pull/1/files. Are there any additional changes required?

long term what we need is our own TLS client. Can fork Go's. Then we have control over everything on the websocket layer.

OK, clear. I did some more debugging and the delays are indeed caused by this call: https://github.com/talostrading/sonic/blob/master/async_adapter.go#L93 (which is a TLS connection for WebSockets).

Would it be possible to implement and quick-and-dirty POC to check whether it would resolve the issue?

This should do it:

https://github.com/csdenboer/sonic/pull/2

maybe this is enough actually:

https://github.com/csdenboer/sonic/pull/2/files
Runs for a couple of seconds and then crashes

I finally got my hands on a Linux box. I'm having a hard time replicating this locally. What are the grub settings you used (nohz=full and the like)? The output to lstopo would also help me.
Btw, given the above analysis, it is unlikely that the problem is TLS. After all, I also see this when simply pinning 2 goroutines that are in an infinite loop.
I'm trying to replicate it to see if this is fixed if we move to syscall.RawSyscall for everything.

Sorry for the late response - had a pretty chaotic week last week. Please let me know if there's anything else you need.
grub settings (default) - I believe isolcpu and nohz didn't solve the issue, so for the sake of simplicity I removed it:
cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt1)/boot/vmlinuz-6.1.115-126.197.amzn2023.x86_64 root=UUID=70d0467a-2f9b-4795-88e2-ccfd3849bd93 ro console=tty0 console=ttyS0,115200n8 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0 selinux=1 security=selinux quiet

lstopo
lstopo
Machine (7727MB total)
  Package L#0
    NUMANode L#0 (P#0 7727MB)
    L3 L#0 (16MB)
      L2 L#0 (1024KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
      L2 L#1 (1024KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1)
      L2 L#2 (1024KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2)
      L2 L#3 (1024KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3)
  HostBridge
    PCI 00:03.0 (VGA)
    PCI 00:04.0 (NVMExp)
      Block(Disk) "nvme0n1"
  HostBridge
    PCIBridge
      PCIBridge
        PCIBridge
          PCI 27:00.0 (Ethernet)
            Net "enp39s0"

@sergiu128 did you manage to make any progress? Thanks!

@sergiu128 did you manage to make any progress? Thanks!

Sorry had not time, quite crazy end of the year. Didn't forget tho, will come back through the holidays on this when I have some time. Thanks!


🚀 [FEATURE REQUEST] - Progress indicator when accessing for the first time

When selecting a server for the first time, I have no idea what's happening—I just see a shard logo without any progress indication. Are the files downloading? Is it frozen?
A progress indicator would be very useful at reducing abandonment.

All that I see in chrome is the server logo. I don't notice any errors in the dev tools.

This was on the latest version of Chrome on Mac. I didn't notice any errors in dev tools.


Azure Function Dapr Extension Input and Output Binding Doesn't Work with Microsoft.Azure.Functions.Worker.Sdk Version >= 1.16.0

Description
Azure Function Dapr Extension Input and Output Binding Doesn't Work with Microsoft.Azure.Functions.Worker.Sdk Version >= 1.16.0
Issue: The Dapr Input and Output bindings do not work as expected.
Investigation Details:

It was observed that the IAsyncConverter.ConvertAsync method is not called by the worker library when using Microsoft.Azure.Functions.Worker.Sdk version >= 1.16.0.

Actual Behavior:

The Dapr Input and Output bindings fail to work with Microsoft.Azure.Functions.Worker.Sdk NuGet package version >= 1.16.0.

Expected Behavior:

The Dapr Input and Output bindings should function correctly with all versions of the Microsoft.Azure.Functions.Worker.Sdk NuGet package. However, they only work when downgrading the package to version 1.15.1.

Attempted Fixes:
Tried upgrading the following packages in the Azure Functions Dapr extension, but the issue persists:

Microsoft.Azure.Functions.Worker.Extensions.Abstractions from version 1.1.1 to 1.3.0 in the WebJobs library.
Microsoft.Azure.WebJobs from version 3.0.36 to 3.0.41.

Steps to reproduce
Prerequisites
This sample requires you to have the following installed on your machine:

Setup Dapr: Follow instructions to download and install the Dapr CLI and initialize Dapr.
Install Azure Functions Core Tool

Either you can download this repo or create a new azure function as mentioned below.

Create a .NET isolated Azure Function.
Add the Dapr extension to the project.

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Dapr --version 1.0.0

Upon creation, the Microsoft.Azure.Functions.Worker.Sdk is set to version 1.17.0.
Add an Azure function with Dapr Output binding

[Function("StateOutputBinding")]
[DaprStateOutput("statestore", Key = "{key}")]
public static async Task<JsonElement> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "state/{key}")] HttpRequestData req,
    FunctionContext functionContext)
{
    var log = functionContext.GetLogger("StateOutputBinding");
    log.LogInformation("C# HTTP trigger function processed a request.");

    JsonDocument doc = await JsonDocument.ParseAsync(req.Body);
    return doc.RootElement;
}

Execute the Azure Function.

dapr run --app-id functionapp --app-port 3001 --dapr-http-port 3501 --resources-path C:\Users\<username>\.dapr\components -- func host start

Linking to another Dapr issue that may require investigation: https://github.com/Azure/azure-functions-dapr-extension/issues/196


Cashrc tests won't wipe out your configurations

Fixes #63. I think to get the cashrc file to be actually sourced, we need to start an interactive vorpal session.
This tries to restore the cashrc file after it's been modified. If it fails, it provides a warning to stderr (which is better than nothing). We might be able to signal a warning better.

:+1:


ENYO-5493: Dialog: Fix the reading order using aria-labelledby prop

Issue Resolved / Feature Added
Fixed the reading order of Dialog's prop buttons and children

AS-IS

Title + TitleBelow + Buttons + Children + Focused button

TO-BE

Title + TitleBelow + Children + Buttons + Focused button

Resolution

Set a unique id(Using IdProvider) for each props(title, titleBelow, buttons, and children)
Set the id to aria-labelledby according to reading order

Links
ENYO-5493
Comments
Enact-DCO-1.0-Signed-off-by: Baekwoo Jung<EMAIL_ADDRESS>

LGTM

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: ryanjduffy:x: Baekwoo-sYou have signed the CLA already but the status is still pending? Let us recheck it.


tmux: new package at 3.0a

Description of package
tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal.
Installed manifest of package
(cat /var/db/kiss/installed/tmux/manifest)
/var/db/kiss/installed/tmux/version
/var/db/kiss/installed/tmux/sources
/var/db/kiss/installed/tmux/manifest
/var/db/kiss/installed/tmux/depends
/var/db/kiss/installed/tmux/checksums
/var/db/kiss/installed/tmux/build
/var/db/kiss/installed/tmux/
/var/db/kiss/installed/
/var/db/kiss/
/var/db/
/var/
/usr/share/man/man1/tmux.1
/usr/share/man/man1/
/usr/share/man/
/usr/share/
/usr/bin/tmux
/usr/bin/
/usr/

New package

[x] Latest upstream version.
[x] I agree to maintain this package.
[x] I agree to notify @dylanaraps if I can no longer maintain this package.

Existing package

[ ] I am the maintainer of this package.

view now It was in repo


Email verification link not passing uuid

Steps to recreate (assuming admin already in users table):
1.) register a new user
2.) open email and click on "Verify Email" link
3.) url shows None instead of uuid: http://localhost/verify-email/None/eOoQbYoav-TdvyIjD6MGeg

closed with #2

closed with #2


Searching Algorithm: Add Interpolation Search in Javascript

[X] Need the correct code for any searching algorithms you upload.
[X] Push the code to the correct directory.
[x] Should also name the file as per the language of your code before you submit a PR.

This Pull Request deals with Issue #3 & Adds the Searching Algorithm: Interpolation Search in Javascript

Thank You 😀


VM Group "soft" affinity / anti affinity rules

Author Name: elder one (elder one)
Original Redmine Issue: 5361, https://dev.opennebula.org/issues/5361
Original Date: 2017-09-12

In some situations is better to run VM anywhere than have it in pending state due to insufficient placement rules.
For example on hardware failure, VM-s tied to failed host with VM group affinity rules wouldn't boot on another host.
So having a "soft" parameter that tries to meet rules defined, but when impossible condition is met, writes warning to log and continues with next best possible outcome.

Still needed ...

I may be wrong, but:

If the host fails, that would trigger the FT hook. That would restart the VMs in other host
Pending VMs will follow the new placement of other VMs in the group
When no FT hook is defined, the affinity policies are indeed soft. If a VM (in that group) is deployed in another host that would be a valid host.
If there is no hook I assume that the admin wants to be notified of this error conditions and recover them manually (e.g. moving failed VMs to another host, or manually deploy one of the pending VMs). In any case, the current affinity policies will recover, as I said they actually implement a soft condition.

Are we missing something here?

When I set vm group affinity to only 2 hosts and 2 vm group roles anti-affined, VM on failed host won't boot.
onevmgroup show 3
VM GROUP 3 INFORMATION
ID             : 3
NAME           : testgroup
USER           : oneadmin
GROUP          : oneadmin
LOCK           : None
PERMISSIONS

OWNER          : um-
GROUP          : ---
OTHER          : ---

ROLES
ID   NAME     POLICY       AFFINED_HOSTS      ANTI_AFFINED_HOST  VIRTUAL_MACHINES
0    front1   ANTI_AFFINED 1, 6               -                  4129
1    front2   ANTI_AFFINED 1, 6               -                  4130

Now I also discovered that even after successful fencing when "failed" host comes online, VM in UNKNOWN state won't be resheduled to that only possible host.
Simulated host failure:
tail -f /var/log/one/host_error.log
[2019-03-13 17:59:38 +0200][HOST 1][I] Hook launched
[2019-03-13 17:59:38 +0200][HOST 1][I] hostname: vml-vm1
[2019-03-13 17:59:38 +0200][HOST 1][I] Wait 13 cycles.
[2019-03-13 17:59:38 +0200][HOST 1][I] Sleeping 390 seconds.
[2019-03-13 18:06:08 +0200][HOST 1][I] Fencing enabled
[2019-03-13 18:06:17 +0200][HOST 1][I] Success: Rebooted
[2019-03-13 18:06:17 +0200][HOST 1][I] Fencing success
[2019-03-13 18:06:17 +0200][HOST 1][I] states: 3, 5, 8
[2019-03-13 18:06:17 +0200][HOST 1][I] vms: ["4129"]
[2019-03-13 18:06:17 +0200][HOST 1][I] resched 4129
[2019-03-13 18:06:17 +0200][HOST 1][I] Hook finished

After that host gets online but scheduler won't reschedule VM to the same host:
tail -f /var/log/one/sched.log
Wed Mar 13 18:32:59 2019 [Z0][VM][D]: Found 1 pending/rescheduling VMs.
Wed Mar 13 18:32:59 2019 [Z0][HOST][D]: Discovered 3 enabled hosts.
Wed Mar 13 18:32:59 2019 [Z0][VM][D]: VMs in VMGroups:

Wed Mar 13 18:32:59 2019 [Z0][VNET][D]: Discovered 61 vnets.
Wed Mar 13 18:32:59 2019 [Z0][SCHED][D]: Match-making results for VM 4129:
        Cannot schedule VM, there is no suitable host.

Also if there's real host failure, lets say power failure - fencing will fail and VMs on that host will not be rescheduled.
[2019-03-13 15:15:57 +0200][HOST 1][I] Hook launched
[2019-03-13 15:15:57 +0200][HOST 1][I] hostname: vml-vm1
[2019-03-13 15:15:57 +0200][HOST 1][I] Wait 13 cycles.
[2019-03-13 15:15:57 +0200][HOST 1][I] Sleeping 390 seconds.
[2019-03-13 15:22:27 +0200][HOST 1][I] Fencing enabled
[2019-03-13 15:22:28 +0200][HOST 1][E] Failed: Unable to obtain correct plug status or plug is not available
[2019-03-13 15:22:28 +0200][HOST 1][E]
[2019-03-13 15:22:28 +0200][HOST 1][E]
[2019-03-13 15:22:28 +0200][HOST 1][E]
[2019-03-13 15:22:28 +0200][HOST 1][E] Fencing error
[2019-03-13 15:22:28 +0200][HOST 1][E] Exiting due to previous error.

Looking at your example:

You also have Host affinity to hosts 1 and 6. That will also restrict the suitable hosts. You mention reschedule, OpenNebula will not reschedule a VM to the same host (because it is already running on it, no need to migrate the VM).
UNKNOWN VMs are not automatically rescheduled/recovered. Unknown state needs can be recovered automatically (when the monitor information starts reporting the VM again) or manually (e.g. rebooting). This manual procedure can be tight to the host boot, but this automatically boot of VMs when a hypervisor is rebooted is not currently provided by OpenNebula.

Sorry but I still don't get what new functionality that is expected different from the current logic described in my previous comment.

that's why I proposed "soft" (checkbox option) affinity / anti affinity rules . If host resources are limited, lets say I have only 2 host and I have 2 vm-s that should run on different hosts but in case of emergency, it's better to run them both somewhere / anywhere (even on the same host) than fail to deploy them.

Another scenario for "soft" rules - when anti affined service role needs to scale beyond affined host count. Lets say I have 3 hosts to run service. When this anti affined service role scales over 3 instances, 4th vm won't boot on the same reason - no suitable host. So soft rule would log a warning for an example and boot next vm on the next best possible host, even though it's out of suitable hosts.


[WIP] Mfa provider

[x] List providers
[ ] Create provider
[ ] Delete provider

Hello @jmcarp - MFA ongoing long-term support is in question for UAA.  I see that it's already been incorporated in the Go Client, but until we've determined that this feature has long term life as a part of UAA holistically, we want to defer adding it to the Go CLI.


Add Font::from_bytes

This eases quite a common case; a single font collection. Works quite naturally with #100 error additions.

@jackpot51 0.5 should be good to go after this I think.


Unable to catch exceptions when headless is turned off

Hello,
There is a simple code:
(async () => {
    try {
        const browser = await puppeteer.launch({
            headless: true
        });
        const page = await browser.newPage();

        await page.goto('http://example.com');

        browser.close();
    } catch (error) {
        console.log(error);
    }
})();

And in case of any error I still have message about unhandled promise rejection.
Interesting fact is that, when I turn off the headless mode, everything works well then. It looks like a bug.

@adamblok can you please paste a snippet that produces this unhandled promise rejection?

Sure, here you are:
const puppeteer = require('puppeteer');
(async () => {
    try {
        const browser = await puppeteer.launch({
            headless: true
        });
        const page = await browser.newPage();

        page.on('response', request => {
            console.log(request);

            // do some stuff
            throw 'invalid response';
        });

        await page.goto('http://example.com');

        browser.close();
    } catch (error) {
        console.log(error);
    }
})();

And the result is:
https://www.screencast.com/t/KK6GzsxN

@adamblok this code yields "unhandled promise rejection" regardless of chrome being in headless or headful mode.
The try-catch statement you put will catch exceptions thrown by one of the await calls.
You, however, throw inside an event listener, which is executed asynchronously, so noone handles it.


Fixed support for iPhone with A10/A11/A12 chips

Fixes issue #5

Enables all iOS devices on the app interface
Adds a method to detect iPhone and iPad using A13 or later
Fallback to CPU only on TextEncoder MLModel initialization for A10/A11/A12 chips

@codingstyle
Thank you for your PR. It's late here. I'll test this fix on a real device tomorrow. Good night : )

@codingstyle Merged. And I've marked #5 as resolved in the README, thank you : )


Adds high capacity water tanks.

About the PR
Adds high capacity water tanks which hold 10x as much water (10,000 units) compared to normal ones. Useful for botantists for keeping their plants well watered without running the station dry. I've also buffed the transfer amount for these tanks, with the highly pressurised water coming out at 100 units at a time, at the same time making it less useful for precise mixing.
Sprites, name, description (but not capacity) is from /tg/station.
Screenshots

Changelog

:cl:

add: High-capacity water tanks have arrived! Botanists no longer have to scavenge for water.

im not really convinced we need these, why are water tanks not good enough

im not really convinced we need these, why are water tanks not good enough

Botany is pretty water intensive. With each tray taking 100u of water, a default water tank can only refill 15 trays (~1.5 refills of the entire set of hydroponics trays on most maps) before you need to find a replacement tank.

what's the issue with having to find a replacement tank

what's the issue with having to find a replacement tank

It's not particularly exciting gameplay, it just means waddling through maint. to see if there's a spare tank. Water tanks aren't even orderable through cargo irrc.

What if sinks could fill up water tanks? I'm not sure how frequently this depletes during botany use, e.g. if it's every 15 minutes they have to fill up water that's not so bad.

I'm not opposed to this, but currently sinks are very finite (~500 units) and coding a plumbing system for sinks is a bit beyond the scope of this PR and my skills.

SS13 Units follow some weird nonlinear scaling for units = liters.
Syringe: 15u = 15ml, 1,000u/L
Beaker: 25u = 250ml, 100u/L
Our Beaker: 50u = 500ml, 100u/L
Lg Beaker: 100u = 1L, 100u/L
1qt Blue Spray bottle: 100u = ~1L, 100u/L
Hydro Soil: 200u
32qt Yellow rolling mop bucket: 500u = ~30L, ~16u/L
2gal Blue Bucket: 70u = ~7L, 10u/L
55gal? (being generous) Water Tank: 1,500u = ~200L, 7.5u/L
Magic HC water tank: 10,000u = ~2,000L?, 5u/L
Here is a graph to visualize this, notice the log scaling...

fine with this being added but it should be salvage-only probably, as a big reward

Worth noting as well that the transfer amount from reagent tanks can be set via your bucket as of #6313, but this was merged a few days after your PR was submitted.


Articulation_Point.py added under Graphs

Have you read the Contributing Guidelines on Pull Requests?
YES
Description
As assigned by @shraddhavp  for Issue #1479, I have added Articulation Point in Python under Graph Algorithms
The idea behind the solution is to use DFS because it forms a DFS tree.
In DFS tree, a vertex u is articulation point if one of the following two conditions is true.
1) u is the root of DFS tree and it has at least two children.
2) u is not the root of DFS tree and it has a child v such that
no vertex in the subtree rooted with v has a back edge to one
of the ancestors (in DFS tree) of u.
Checklist

[X] I've read the contribution guidelines.
[X] I've checked the issue list before deciding what to submit.
[X] I've edited the README.md and link to my code.

Related Issues or Pull Requests
#1479
I request @shraddhavp @iamrajiv @atarax665 to Review this PR

LGTM


Nick: Watch excelstrategies.in

Nick requests the watch of the watch_keyword excelstrategies\.in. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

excelstrategies\.in has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by tripleee in Charcoal HQ


add inclusive language

is this all a certain client app needs ?
... otherwise I think there are a bunch of other methods that need an alias
having methods to use things that are different from the config and services etc could lead to confusion,
also making it harder to find things when greping through the codebase

Yes, mainly to appease the inclusive language check app. Not sure what's a good solution.

can also disable the app I think ... there is some comment or so

👎 Then I’d prefer the approach taken in #216.

FYI config can be at .github/term-check.yaml ... see https://github.com/zendesk/term-check for all options

thanks!


Dataset

Excuse me, How can I download these datasets?

Excuse me, How can I download these datasets?
Hi, gala.
Have you find the datasets?  If you solve it, please help me how to download the dataset! Think you!


Updating rollup to a more recent version breaks the project

Hello,
When updating the rollup dependency to a more recent one (I tried the last one), rollup can not resolve anymore
import * as components from '@/components/index'; from entry.ts
Any idea on what to fix?

Was the update for rollup itself, or a rollup plugin? Also, were other dependencies updated at the same time, or just one? Not enough detail here to even start a guess.
Also, this is not a bug with vue-sfc-rollup itself, but more an issue with your rollup configuration/npm dependencies. As a result, I am going to close this issue, with the recommendation that you look at the latest beta version of vue-sfc-rollup and use it to create a "test" library with typescript support, then compare the config/package.json with your own. You might find something there that you can use to get your library build working again.
The beta version is just about ready to be released as a new major version - just hoping one upstream bug can get fixed first, but I have been waiting long enough I am tempted to release it anyway with a note of the issue.

Was the update for rollup itself, or a rollup plugin? Also, were other dependencies updated at the same time, or just one? Not enough detail here to even start a guess.
Also, this is not a bug with vue-sfc-rollup itself, but more an issue with your rollup configuration/npm dependencies. As a result, I am going to close this issue, with the recommendation that you look at the latest beta version of vue-sfc-rollup and use it to create a "test" library with typescript support, then compare the config/package.json with your own. You might find something there that you can use to get your library build working again.
The beta version is just about ready to be released as a new major version - just hoping one upstream bug can get fixed first, but I have been waiting long enough I am tempted to release it anyway with a note of the issue.


Pytest sanic

add pytest-sanic for easy testing.

Can you make sure to add this to the wiki as well?

Sure.


RTL support

Right now, everything is designed as LTR.  This is a cover bug for enabling RTL support.

[ ] Navigation areas of the screen should be flipped (i.e. tapping the left side of the screen will advance to the next page; the right side of the screen will go back to previous)
[ ] Keyboard keys should be flipped (left arrow for next; right arrow for previous)

Migrated to ampproject/amphtml#11647.


Text don't span anymore

Added a way for the buttons size to be set by getBoundingClientRect()
The text shouldn't span over the buttons in:

Your Projects
Your Servers
Your Organizations

All these views got the same button and the same issue. I don't think this button is elsewhere.

Changes when you make the window very small:


Publish the code of the demo page?

Hey there,
I really like Bright Sky - thanks for your development.
As I want to use pretty much exactly the simple weather app you have on the demo page, I wanted to ask, if you could publish the code of this.
It would be really helpful to me, as I am not that into JavaScript and the demo app is just perfect for my use case.
Thank you for considering my proposal and for the continued development!

Heyho @BlackScreen, thanks for the kind words!
It's already published in this repo under the docs/demo folder :) (with the JavaScript starting on line 92)
I'm closing this for now but feel free to re-open if you think something's missing!

Heyho @BlackScreen, thanks for the kind words!
It's already published in this repo under the docs/demo folder :) (with the JavaScript starting on line 92)
I'm closing this for now but feel free to re-open if you think something's missing!

@jdemaeyer
Thanks for the help, I just did not see that here. Sorry for that.
I copied the whole "demo" folder over to my webspace, but the whole block of the response and the app block do not refresh when i change parameters - unlike on your page. I do not know why. Any idea what I am doing wrong? :/

@jdemaeyer
Thanks for the help, I just did not see that here. Sorry for that.
I copied the whole "demo" folder over to my webspace, but the whole block of the response and the app block do not refresh when i change parameters - unlike on your page. I do not know why. Any idea what I am doing wrong? :/

Ok, if I understand correctly this error is solveable with adding a ".htaccess" to your server and adding this to the file:
<IfModule mod_headers.c>
	Header set Access-Control-Allow-Origin *
</IfModule>

I am obiously no expert on this, but reading this and a few other results on Google seem to hint to this. Would adding the header be an option for you or should I look into other solutions?

Ok, if I understand correctly this error is solveable with adding a ".htaccess" to your server and adding this to the file:
<IfModule mod_headers.c>
	Header set Access-Control-Allow-Origin *
</IfModule>

I am obiously no expert on this, but reading this and a few other results on Google seem to hint to this. Would adding the header be an option for you or should I look into other solutions?

We are purposefully not setting the CORS headers as it'll interfere with out rate-limiting (although currently we are way below request volumes where our rate limits would apply...)
If you still want to make Bright Sky requests from the frontend (opposed to doing them in the backend and then forwarding the data to your frontend), you can try using this service: https://cors-anywhere.herokuapp.com/
It'll simply forward Bright Sky's response with some additional CORS headers. Just replace
const BRIGHTSKY_URL = 'https://api.brightsky.dev/';

with
const BRIGHTSKY_URL = 'https://cors-anywhere.herokuapp.com/https://api.brightsky.dev/';

at the top of the javascript code.

We are purposefully not setting the CORS headers as it'll interfere with out rate-limiting (although currently we are way below request volumes where our rate limits would apply...)
If you still want to make Bright Sky requests from the frontend (opposed to doing them in the backend and then forwarding the data to your frontend), you can try using this service: https://cors-anywhere.herokuapp.com/
It'll simply forward Bright Sky's response with some additional CORS headers. Just replace
const BRIGHTSKY_URL = 'https://api.brightsky.dev/';

with
const BRIGHTSKY_URL = 'https://cors-anywhere.herokuapp.com/https://api.brightsky.dev/';

at the top of the javascript code.

I understand. Thank you for your help, it works now! :)

I understand. Thank you for your help, it works now! :)

Awesome! :)

Awesome! :)

Heyho @BlackScreen!
Bright Sky now allows CORS requests from all origins :)


Type to Text and Shapes not working

Describe the bug
Type to Text on the workspace  page is not working along with the shapes creation
To Reproduce
Steps to reproduce the behavior:

Go to workspace
Click on Type to Text
See error

Expected behavior
Ideally the text we typ should reflect on the canvas
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

go ahead @haseebzaki-07


I have a question about prompt encoder's inputs.

Hi! Thank you for the great project.
I read the paper "GPT understand, too!". I understand that if an input such as "The capital of Britain is [MASK]" is given, then only the context Britain and Target [MASK] are embedded in the pre-train embedding layer, and the rest of the tokens are embedded in the prompt-encoder.
=> h(The), h(capital), h(of), e(Britain), h(is), e([MASK]) (h means prompt-encoder, e means pre-trained embedding layer).
But when I checked the code, the input of the prompt-encoder was always the same as [0, 1, 2, 3, 4, 5].
Can anyone explain what I misunderstood?
Thank you.

Oh, I understand. Never mind.


Issue with the new update and syncing node

Environment

Smapp version: 1.4.3 | develop
Node version: v0.x.xx
OS: Windows 10 | macOS High Sierra (10.13) | Ubuntu 20.04

Describe the bug
I did the update to v1.4.2 to v1.4.3 will i was smeshing and the app restarted, then i tried to do the syncing again but it doesn't want to finish an the smapp closes automaticly.
what should i do?

We definitely need logs from the app and node.
Without them we cannot help at all.

How can i find those informations

We definitely need logs from the app and node. Without them we cannot help at all.

Please tel me how can i have those informations I'm not realy good in tec


[ISSUE#1896][MAS1.3.1][Screen Reader-Connect the bot] Incorrect position of the controls are announced by voiceover for the buttons available at the top most menu bar.

Solves #1896
Description
Fixes how voiceover announces the position of the editor menu bar's buttons controls
Changes made
We added an aria-hidden attribute to the separator bar between the restart conversation button and the sub-menu button. This way voiceover skips this element which was causing the problem.
Additionally, we noticed that in windows, the last element of the menu bar was not being announced as 3/3. To solve this we removed a div around the save transcript button and moved the role label menuitem inside it.
Testing
In the next image, you can see the voiceover reading the order of the elements as intended.

Coverage remained the same at 66.895% when pulling 27509eedd01b905eeb97e0c2cbba640135b699db on fix/incorrect-position-announced into 5f34abf872603309f574f81d8d30bf3e5a526057 on master.

Thanks @tonyanziano ! I justed pushed the updated changelog


Implement ClientState::status()

Closes: #536

Updated changelog; is this what you had in mind? Basically now we have only 1 entry that points to ibc-derive being changed, even though both ibc and ibc-derive were changed. Since this will always be the case (i.e. ibc-derive only changes when ibc changes), I figured it was self-explanatory?

Updated changelog; is this what you had in mind? Basically now we have only 1 entry that points to ibc-derive being changed, even though both ibc and ibc-derive were changed. Since this will always be the case (i.e. ibc-derive only changes when ibc changes), I figured it was self-explanatory?

Yup, this works.


[Bug] Group_Concat order by descending not working

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
1.2.3
What's Wrong?
group concat function unable to order by descending value
What You Expected?
order by descending
How to Reproduce?
select GROUP_CONCAT(name order by value desc) groupconcat
from (
select 'a' name, 50 value
union
select 'b' name, 30 value
union
select 'c' name, 50 value
union
select 'd' name, 40 value
) t
result:
groupconcat|
-----------+
b, d, a, c |
expected:
groupconcat|
-----------+
a, c, d, b |
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Tested no issue in 2.0.0


mitigate undefined symbol _fltused

This hopefully fixes the build until the issue is resolved in the linker.
Ref rust-lang/rust#62785

The UEFI target is compiled with soft-float enabled. Shouldn't that suppress usage of _fltused? Or am I misunderstanding it's purpose? Also _fltused is still emitted on UEFI by compiler-builtins: https://github.com/rust-lang/compiler-builtins/blob/dffad9b98ac33c4e22a08397cfbcc52262ab1676/src/x86_64.rs#L77-L82 That will conflict with this definition, right?

@bjorn3 it fixed all problems with my bootloader fork.
However, the issue seems fixed with today's rust nightly, closing this.


Respect Cargo target directory configuration

Changes:

Removes hard-coded target/server and target/front

Using the normal target directory allows for sharing build dependencies between projects, which can significantly reduce compile times
It is unclear why they're hardcoded separate directories in the first place
Removing them was easier than making them use the proper target directory

Uses proper relative paths for bin and lib packages

Fixes #74, fixes #127, fixes #157
Adds dependency pathdiff

It can still fail, but insofar I can tell will only do so if the base path is relative and the target path is absolute

Absolute paths would be better:

No chance of failure
No additional dependency
But those break snapshot testing

Defaults site-root to the /site/ subfolder of the cargo target directory

That is insofar I can tell how it was intended
The current method is a bit clunky, but it's the best I could come up with with serde's default

An alternative would be to use an option and set it to Some in parse(),
but that would forces Some checks everywhere.

Snapshot testing survives this because the test cases always manually specify it.

Didn't manage to add additional regression tests:

Changing the target directory has to be done through a .cargo/config.toml from where cargo is invoked,
and does not take the --manifest-path into account

Known problem: https://github.com/rust-lang/cargo/issues/10098

The tests already specify a cwd, though it'sn't used for the cargo metadata call,
and isn't set to the directory of the actual project/workspace being tested. I can't figure out what exactly it's supposed to do,
and I don't feel confident doing something with it.

Additional notes/things to look at that are outside the scope of this PR:

Snapshot testing is broken for developers who have a different Cargo target directory
clippy has complaints about cloning double references in src/ext/path.rs

Had to temporarily remove my own target-dir configuration to make it match the CI, but the tests look like they should match what the CI is expecting now.

As a general comment, could you please include a sample dev experience walkthrough of how to leverage these improvements? This way I don't have to guess if I did the right set up to verify changes are doing what they are intended to accomplish.

@aperepel
The easiest way to test everything would be to configure the target directory in the top-level cargo configuration in ~/.cargo/config.toml, for example with:
[build]
target-dir = ".cargo/targetShare"

This shares the target directory between projects. I personally do this to speed up compilation and save disk-usage by re-using already compiled dependencies (between projects), other people might have other reasons.
With this configuration, one would expect that:

No panics happen

Previously it would panic for target directories outside of the workspace (see linked issues)

By default, the server binary gets built in the configured target directory, and can reuse compiled dependencies

This is configurable, though previously it would default to target/server, irregardless of the configured target directory, effectually overwriting your config for no apparent reason.

The wasm/client binary gets built in the configured target directory (though in the  wasm32-unknown-unknown subfolder), and can reuse compiled dependencies

Previously, this was hard-coded to target/front, with no way to configure/change it, , effectually overwriting your target directory config for no apparent reason.

By default, the other site assets are put somewhere in the configured target folder

Previously, this would default to target/site, irregardless of the configured target directory, effectually overwriting your config for no apparent reason.

(Ideally there'd be a test demonstrating all this, but see my original PR comment for why I didn't manage to make one)

Hello, what's the status here? I've been using a binary compiled from this PR for quite some time now (without any issues) and I'd love to see this merged so I can use other updates as well. Is there anything I can help with? (code, testing, review, ...)

Sorry for the delay here — I've been reviewing PRs post-0.5 and am going to start going through these now.


Improve Add and Edit Allocations date selection

Issue #481
Sometimes selecting dates from a calendar can be difficult, so we are improving the way people can select weeks, months, and years for when they create or edit an allocation.

This functionality should add weeks, months, and years from the start date to the end date or add the same amount of time to both?
For example. The user sets a starting date and can add weeks, months, and years only to the end date with the new functionality?

@otech47 @sofiarm21 @mecoccaro

I already did the accordion but Instead of Quick Select what name can we use there?

Update

Trinary: Date Quick Select explanation - Watch Video


Using search bar for components stops the ability to select different tabs on the builder palette

Environment
Please provide as many details as you can:

Hosting type

[x] Form.io
[x] Local deployment

Version: Angular 10

Formio.js version: 4.11.5
Frontend framework: Angular with Bootstrap
Browser: Google Chrome
Browser version: 99.

Observed Issue

Using search bar for components stops the ability to select different tabs on the builder palette
Unable to select other tabs

Example
If possible, please provide a screenshot, live example (via JSFiddle or similar), and/or example code to help demonstrate the issue.
Search

Tab not opening

Same kind of issue observed in formiojs as well
https://github.com/formio/formio.js/issues/3893

Hello @chintuyadavsara,
We are not able to replicate this issue using Formio.js 4.14.1. Can you try upgrading and see if the issue still exists?
Thank you.

We're currently addressing a backlog of GitHub issues, and as part of this effort, some inactive issues may be marked as closed. This isn't a dismissal, but a step toward more efficient tracking.
If you feel the issue is still relevant, please re-open and we'll ensure it gets the attention it deserves. Your understanding is appreciated as we work to enhance our open-source responsiveness.


How to create multiple languages

I want to change the language in which the page is displayed, what do I need to change?Even if it's just a local operation

Hi ! Unfortunately, nothing was designed with translation in mind. One have to change a lot of sentences in a lot of different files.
Maybe someday we'll take the time to rewrite things with translation in mind ?


How can i know last version num?

Just wondering where to find this missing version info for Carthage file link

Sorry I have no idea because I don’t use Carthage. If you know how to fix it, make a PR please. Thanks

On 6 Jul 2018, at 9:07 PM, Vitaliy A<EMAIL_ADDRESS>wrote:
Just wondering where to find this missing version info for Carthage file link
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/vinceyuan/VYNFCKit/issues/9, or mute the thread https://github.com/notifications/unsubscribe-auth/ABDuFPSwRX-2uVNKLO7U3e6lz7qYzTsWks5uD2EXgaJpZM4VFbkQ.

why my iphone can't scan ,my iphone is iphone7,If there is a setting in the iphone NFC functionality,but I can't find it

emm.. my iphone is iphone7 too, can't scan,.