xmodmap really slow
Alan Hourihane
alanh at fairlite.co.uk
Mon Dec 3 10:24:16 UTC 2018
On 30/11/2018 14:48, Olivier Fourdan wrote:
> On Fri, Nov 30, 2018 at 2:38 PM Alan Hourihane <alanh at fairlite.co.uk> wrote:
>> [...]
>> Many thanks for following and providing a patch.
>>
>> Might take me till Monday, but running....
>>
>> xmodmap -pke > /tmp/keydump
>> xmodmap /tmp/keydump
>>
>> Where the last command invokes multi-second delays should be easy to test.
> Unfortunately, I don't see any such slow down here, so I cannot
> reproduce nor test if the change makes any difference.
>
> Yet, several seconds is weird... I mean, even if optimizing that loop
> in ilog2() would be nice, I can't imagine this being the source of
> such long delays...
>
> Can you reproduce with, say, Xephyr? If so maybe try running is strace :
>
> $ strace -Trttto strace.log Xephyr :12 &
> $ xmodmap -d :12 -pke > /tmp/keydump
> $ xmodmap -d :12 /tmp/keydump
>
> That would tell if the Xserver (Xephyr in this case) is spending too
> much time in a syscall, like for example reading a file or something?
Now running strace with Xorg, shows a gazillion entries of....
1543832258.343257 (+ 0.000012) recvmsg(51,
1543832258.343278 (+ 0.000021) writev(51, [{iov_base=
1543832258.343316 (+ 0.000038) writev(51, [{iov_base=
1543832258.343345 (+ 0.000028) recvmsg(51,
1543832258.343382 (+ 0.000037) writev(51, [{iov_base=
1543832258.343399 (+ 0.000016) writev(51, [{iov_base=
1543832258.343415 (+ 0.000015) recvmsg(51, {msg_name=
1543832258.343432 (+ 0.000017) writev(51, [{iov_base=
1543832258.343446 (+ 0.000014) writev(51, [{iov_base=
1543832258.343461 (+ 0.000014) recvmsg(51, {msg_name=
1543832258.343477 (+ 0.000016) writev(51, [{iov_base=
1543832258.343491 (+ 0.000014) recvmsg(51, {msg_name=
1543832258.343513 (+ 0.000021) writev(51, [{iov_base=
1543832258.343528 (+ 0.000014) writev(51, [{iov_base=
1543832258.343543 (+ 0.000015) recvmsg(51, {msg_name=
1543832258.343563 (+ 0.000020) writev(51, [{iov_base=
1543832258.343578 (+ 0.000014) writev(51, [{iov_base=
1543832258.343595 (+ 0.000017) recvmsg(51, {msg_name=
1543832258.343616 (+ 0.000021) writev(51, [{iov_base=
1543832258.343631 (+ 0.000014) writev(51, [{iov_base=
1543832258.343646 (+ 0.000014) recvmsg(51, {msg_name=
1543832258.343662 (+ 0.000016) writev(51, [{iov_base=
1543832258.343676 (+ 0.000014) writev(51, [{iov_base=
1543832258.343691 (+ 0.000014) recvmsg(51, {msg_name=
1543832258.343708 (+ 0.000017) writev(51, [{iov_base=
1543832258.343723 (+ 0.000014) recvmsg(51, {msg_name=
1543832258.343744 (+ 0.000021) writev(51, [{iov_base=
1543832258.343759 (+ 0.000014) writev(51, [{iov_base=
1543832258.343774 (+ 0.000015) recvmsg(51, {msg_name=
Just grepping for "PC_SUPER_LEVEL2" in shows it appears 248 times...
1543832258.359056 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832258.496996 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832258.621288 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832258.757169 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832258.898062 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.053227 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.276614 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.458735 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.596836 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.671676 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.767659 (+ 0.000014) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.849037 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.925398 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
1543832259.969188 (+ 0.000013) writev(3,
[{iov_base="PC_SUPER_LEVEL2", iov_len=15}, {iov_base="\0", iov_len=1}],
2) = 16 <0.000004>
... and so on
Alan.
More information about the xorg-devel
mailing list