질문

질문

질문

다음 코드 조각은 시스템이 열리는 데 걸리는 시간 inkscape과 창을 즉시 닫는 데 걸리는 시간을 보여줍니다 inkscape.

$ /usr/bin/time -p inkscape
real 26.95
user 0.59
sys 0.05

글을 읽었습니다(여기그리고여기) 사람들은 inkscape를 시작하는 데 시간이 너무 오래 걸린다고 보고하지만 대답은 이 문제를 사용자 시스템에 설치된 글꼴 수와 관련시킵니다.

내가 아는 한, 다음 명령을 사용하여 내 시스템에 설치된 글꼴 수를 얻을 수 있습니다(아래 참조). 따라서 내 시스템에 설치된 글꼴 수는 여기서 문제가 되지 않습니다.

$ fc-list | wc -l
105

나는 명령 출력을 살펴보고 strace여는 과정을 느리게 만드는 작업을 발견했습니다 inkscape. (전체 로그는 strace모든 출력에서 ​​일부 개별 파일의 이름을 보고하므로 전체 로그를 공유하지 않습니다 .)

$ strace --absolute-timestamps=ns inkscape
...
13:27:03.700577007 read(11, "\1\0\0\0\0\0\0\0", 16) = 8
13:27:03.700603187 poll([{fd=11, events=POLLIN}], 1, 25000) = 0 (Timeout)
13:27:28.725932887 write(11, "\1\0\0\0\0\0\0\0", 8) = 8
13:27:28.726024537 futex(0x55ca60dcb240, FUTEX_WAKE_PRIVATE, 2147483647) = 0
...

위에서 볼 수 있듯이 두 작업 사이에 25초의 간격이 있으므로 이는 문제와 관련이 있을 것입니다.

질문

시스템 호출은 무엇을 하고 poll있으며 시스템이 해당 시스템 호출을 실행하는 데 걸리는 시간을 어떻게 줄일 수 있습니까?

PD1: poll([{fd=11, events=POLLIN}], 1, 25000구글링해서 찾아봤는데이 문제포스터 중 하나에서는 GTK3 애플리케이션이 느리게 시작되고 strace이러한 오작동이 디스플레이 시스템 호출에 너무 많은 시간이 걸린다는 사실(이 기사에 제시된 것과 동일)과 연결되어 있다고 설명했지만 답변이 도움이 되지는 않았습니다.

답변1

특정 시스템 호출은 그렇지 않습니다.행위그 자체로 무엇이든. 그것은기다리다특히 FD 11에서 데이터를 읽을 수 있도록 다른 작업을 수행하십시오. 기다리고 있는 데이터를 가져오지 못하는 이유를 알아내려면 FD가 무엇에 연결되어 있는지 확인하고 반대쪽 끝에 쓰기 위해 무엇을 연결해야 하는지 찾아야 합니다.

그런데,이 문제당신이 발견한 것은극도로도움이 된다면, 너무 빨리 무시하기보다는 더 주의 깊게 다시 읽고 조언을 다시 들어야 합니다.

관련 정보