Xorg(또는 모든 X 윈도우 서버)가 X 서버의 "스텁"을 생성하여 응용 프로그램의 API 호출을 수락한 다음 호출을 처리하고 프레임 버퍼를 업데이트하고 작성하는 대신 완전히 무시하도록 설정이 있습니까? 메모리 부족? 그래픽 애플리케이션(예: Firefox)을 실행할 수 있어야 하지만 그래픽 출력에는 크게 관심이 없고 렌더링 오버헤드를 최대한 줄이고 싶습니다. 그래픽 렌더링으로 인해 변경되지 않는 웹 페이지 타이밍을 얻으려고 합니다.
또는 모든 X 서버 API 호출을 "로그"하고 디스크에 덤프한 다음 나중에 다시 재생하여 그래픽 렌더링에서 웹 타이밍을 분리하면서도 응용 프로그램이 보고 있는 내용에 대한 스냅샷을 계속 생성할 수 있는 방법이 있습니까? ? 다른 시점의 스크린샷?
답변1
당신이 찾고있는 Xvfb
. 매뉴얼에서:
Xvfb is an X server that can run on machines with no display hardware and no physical input devices. It emulates a dumb framebuffer using virtual memory.
답변2
1996년에 이 작업을 수행할 수 있는 프로그램이 있었는데 최근에야 debian에서 제거되었습니다. 요청을 필터링하고 X11 서버에 응답하는 xmon
두 부분으로 나뉘었고 , 요청을 억제할 수 있는 GUI도 있었습니다. 아무것도 그리지 마세요. 이는 여전히 배포되는 프로그램의 포크(요청 및 응답을 추적하는 데 사용됨)입니다 . 그러나 찾기 위해서는xmond
xmonui
xscope
원천오늘 컴파일 하려면 xmon
약간 광신적 이어야 합니다 . 디버깅할 X11 버그가 더 이상 없기 때문에 제거된 것 같습니다...
맨스몬:다음 다이어그램은 xmon과 xmon 데몬 간의 관계를 보여줍니다. 클라이언트와 서버도 마찬가지입니다.
----------
| xmonui |
----------
|
v
------------ ----------
| client 1 |<------->| |
------------ | | ----------
: | xmond |<----->| server |
: | | ----------
------------ | |
| client n |<------->| |
------------ ----------
|
v
monitor output to stdout
시도해 볼 수 있는 또 다른 최적화는 Xvfb
깊이가 1(단색)인 매우 작은 화면(예: 64x64 픽셀)을 만들고 Firefox 창을 화면 밖에 배치하여 보이지 않기 때문에 렌더링되는 양이 많지 않도록 하는 것입니다.