커널 스레드에서 고해상도 잠자기?
잠자기 결심을 스레드에 넣는 올바른 방법은 무엇입니까? 나는 장치 드라이버를 작성하려고 하는데 특정 수의 사람들에 대한 GPIO 인터럽트 후에 핀을 높게 유지해야 합니다. 내 계획은 핀을 높게 설정하고 일정 시간이 지나면 핀을 낮게 설정하는 커널 스레드를 생성하는 GPIO 인터럽트용 커널 모듈을 만드는 것입니다. 이것이 작동할까요? ...
잠자기 결심을 스레드에 넣는 올바른 방법은 무엇입니까? 나는 장치 드라이버를 작성하려고 하는데 특정 수의 사람들에 대한 GPIO 인터럽트 후에 핀을 높게 유지해야 합니다. 내 계획은 핀을 높게 설정하고 일정 시간이 지나면 핀을 낮게 설정하는 커널 스레드를 생성하는 GPIO 인터럽트용 커널 모듈을 만드는 것입니다. 이것이 작동할까요? ...
네트워크 시뮬레이션을 사용하고 싶습니다(네템)안에PREEMPT-RT 코어지연 시간과 지터를 0.5ms ± 10%까지 시뮬레이션합니다. 그래서 처음에는 내부 코어 클럭 속도를 최소 2000Hz로 조정해야 한다고 생각했습니다. 이는 0.5밀리초의 시간 결정적 지연을 추가할 수 있다는 의미이기 때문입니다. 그러나 더 낮은 코어 클럭 속도에서도 제대로 작동하는 것 같습니다(실험적으로 측정). 몇 가지 조사 후에 나는 이것이 커널 구성의 틱 없음 설정 또는 동적 틱 때문일 수 있다고 생각했지만 기본적으로 커널...
저는 4코어 ARM CPU를 사용하여 임베디드 실시간 Linux 장치를 작성하고 있습니다. 10kHz에서는 주기적인 계산이 필요하며, 이는 지터가 너무 심해져서 손실되어서는 안 됩니다. 내 POSIX 스레드는 사용 중인 루프에서 하드웨어가 제공하는 10kHz 토글 레지스터를 읽고 비트가 토글될 때 계산을 수행할 수 있습니다. SCHED_RR스케줄러가 pthread를 중단하는 것을 방지하기 위해 특별히 이 스레드에 대해 CPU 선호도를 코어 2로 설정하고 우선 순위를 99(최대)로 설정했습니다. 몇몇 ...
실제 날짜/시간을 사용하고 일시 중지를 무시하는 절전 명령이 있습니까? echo a;sleep 3600;echo b 10분 일하고 2시간 동안 노트북을 멈춥니다. 일시 중지 상태에서 깨어날 때 "b"는 즉시가 아닌 50분 후에만 인쇄됩니다. 또 다른 옵션은 nA=`date +%s`;nB=$((nA+3600)) while((`date +%s`<nB));do sleep 1;done 그런데 이것을 수행하는 명령이 있는지 궁금합니다. sleep --usedatetimecheck 3s 3600(3초처럼...
저는 단일 이더넷 프레임을 수신한 다음 정확히 1초 지연(그 사이에 일부 처리 포함) 후에 데이터를 다른 이더넷 프레임으로 보내는 시간에 민감한 네트워크 애플리케이션을 작성하고 있습니다. 하지만 특히 어려운 점은 내가 할 수 있는 능력도 필요하다는 것입니다.취소이 지연 간격 동안 다른 유형의 다른 메시지가 수신되면 패킷 전송을 계속합니다. 정확히 1초의 지연을 얻기 위해 커널의소켓 타임스탬프 기능이것과 결합시간 기반 패킷 전송. 이 두 가지 기능을 결합하면 애플리케이션을 사용자 공간에 유지하면서 전체...
6.4.0저는 Linux 커널과 패치를 사용하여 Linux 실시간 시스템을 사용자 정의하고 있습니다 patch-6.4.6-rt8. 런타임 시 make menuconfig실시간 성능을 향상하려면 어떤 구성을 꺼야 합니까? 시스템은 주로 로봇 팔 컨트롤러 역할을 합니다. 이때 시스템을 사용하여 cyclictest지연 효과를 테스트한 결과, 지터가 최소값 2, 최대값 39로 다소 높은 것으로 나타났습니다. # cyclictest -t1 -p 80 -n -i 1000 -l 10000 # /dev/cpu_dm...
C로 작은 애플리케이션을 만들었습니다. 5MB의 문자 버퍼 2개를 할당합니다. 1000번 반복 array1 또는 array2의 모든 요소는 루프에서 합산(교대)하므로 내부 루프에서는 500만 개의 추가가 수행됩니다. 이 내부 루프의 시간을 측정합니다(시계 단조). 내부 루프에 필요한 최소/최대 및 평균 시간을 확인하세요. 놀랍게도 IMX8의 지터 계수는 거의 1.6..2.0이므로 1000개의 루프 중 한 번은 약 4.5ms, 적어도 거의 9ms입니다. 평균은 약 4.6밀리초이지만 더 오래 걸리는 ...
다른 프로세스를 위해 작업을 수행하는 프로세스의 PID나 기타 정보를 어떻게 찾을 수 있나요? kworker예를 들어, 스레드 또는 커널의 다른 프로세스에 대한 작업을 수행하는 다른 스레드/프로세스에 대해 이야기하고 있습니다. 내 딜레마는 CPU 선호도가 CPU 0에 바인딩된 sched prio 99로 실행되는 실시간 예약 프로세스가 있지만 (SCHED_FIFO)내 컴퓨터에 CPU 압력을 주입할 때 중요한 rt 프로세스가 중요하지 않은 다른 프로세스를 선점하지 못한다는 것입니다. 프로세스. 아마도 와...
저는 타이밍 동기화 작업을 하고 있으며 시스템에 다양한 오류를 주입하는 것이 시간 동기화에 미치는 영향을 측정하고 싶습니다. 내가 이해한 바로는 Linux 시스템의 PPS 장치에는 시간과 시퀀스 ID를 제공하는 "assert"와 같은 텍스트 파일이 연결되어 있습니다. 이 타임스탬프는 얼마나 정확하고 신뢰할 수 있나요? (원천:https://docs.kernel.org/driver-api/pps.html) 문맥상 Linux 커널의 /dev/pps0은 제가 말하는 장치이며 Intel I210 NIC와 연...
저는 임베디드 Linux 시스템(kernel-5.10.24)을 개발 중입니다. 예약되지 않고 CPU를 완전히 점유하는 프로세스를 얻으려고 합니다. #define _GNU_SOURCE #include <sched.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> int main(int argc, char **...
10개의 코어가 있는 MBP M1에서 실행됩니다. 1개의 스레드 클라이언트(wrk)와 1개의 스레드 서버(java)를 실행합니다. YouTube도 시스템에서 실행 중입니다. 로드 평균은 10점 만점에 2점입니다. GC 외에 지연 시간의 큰 차이를 일으키는 원인은 무엇입니까? "percentile": 0, "latency_in_microseconds": 10 }, { "percentile": 50, ...
나는 이상한 관찰을 발견했습니다. 만약 내가한다면:journalctl -k -b -0 | sed -e 's/^\(.\{76\}\).*/\1.../;3q' 다음과 같은 내용이 표시됩니다. -- Journal begins at Sun 2022-08-07 12:06:55 CEST, ends at Mon 2023-02-20 08... Jan 09 15:07:39 magnet kernel: Linux version 5.10.0-20-amd64 (debian-kernel@... Jan 09 15:07:39 m...
방금 타이밍을 확인했습니다. gnome-terminal새 창을 여는 데 약 0.41~0.45초가 걸립니다 kitty. 여는 데 시간이 너무 오래 걸리기 때문에 약간 귀찮습니다. 마우스/키보드 이벤트와 동일). 창 열기 프로세스 속도를 높이는 방법에 대한 몇 가지 제안이나 더 빨리 열리는 일부 터미널 대안을 원합니다(저는 kitty이것을 몇 년 동안 사용해 왔습니다). 어쩌면 누군가가 자신의 타이밍을 공유하여 내 것을 무언가와 비교할 수 있을 수도 있습니다(인터넷에서 이 문제에 대한 정보를 찾지 못했습...
나는 달리고 있다팝오스 22.04내Dell 노트북 [amd64, Intel i3, 4GB RAM]. 시작하는 데 시간이 많이 걸려서 sudo dmesg터미널에서 실행했는데 오류가 표시되었습니다. rcu: INFO: rcu_preempt detected expedited stalls on CPUs/tasks: { P1844 } 6 jiffies s: 417 root: 0x0/T 검색해 보니 실시간 우선순위 프로세스가 CPU 공간을 다 잡아먹고 있다는 뜻이어서 htop을 실행해 봤습니다. 설명이 io....