[dev] [st] Slow ST character typing on i686/pentium3 platforms]

From: Roger <rogerx.oss_AT_gmail.com>
Date: Tue, 3 Mar 2015 20:21:04 -0500

ST appears to compile and run fine on 64 bit and 32 bit platorms, except on 32
bit (i686/pentium3), typing is extremely slow.

Using strace/ltrace on the latest stable 0.5, I see some hangups on the
"select" call. Using the git version, I now see select substituted with
pselect. The following is a paste of strace output, typing 'j' within the
terminal. With the pselect, the slow typing still occurs on i686 32 bit.

Sorry I keep forgetting to adjust line lenght when using strace, but it looks
somewhat obvious to me what is happening, getting "EAGAIN (Resource temporarily
unavailable)", while the pselect call only handles EINTR errno condition?


$ strace ./st

--- Snip ---
read(4, "j", 8192) = 1
clock_gettime(CLOCK_MONOTONIC, {5734, 304463635}) = 0
pselect6(5, [3 4], NULL, NULL, {0, 8000000}, {NULL, 8}) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5734, 314120972}) = 0
recvmsg(3, 0xbfb89450, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\212\32\v\0\1\0\1\0\7\0\200\0\0\0\0\0\0\0\377\377\2\0\36\0\2\3\16\0\0\0\36\0"..., 672}, {NULL, 0}, {"", 0}], 3) = 672
recvmsg(3, 0xbfb89410, 0) = -1 EAGAIN (Resource temporarily unavailable)
pselect6(5, [3 4], NULL, NULL, NULL, {NULL, 8}) = 1 (in [3])
clock_gettime(CLOCK_MONOTONIC, {5735, 522717105}) = 0
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\2,g\2a\204W\0\1\1\0\0\1\0\200\0\0\0\0\0|\1R\1{\1B\1\0\0\1\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0xbfb89450, 0) = -1 EAGAIN (Resource temporarily unavailable)
write(4, "j", 1) = 1
recvmsg(3, 0xbfb89450, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\212\32\7\0\1\0\1\0\7\0\200\0\0\0\0\0\0\0\377\377\270\0\36\0\7\0\16\0\212\6\5\0"..., 236}, {NULL, 0}, {"", 0}], 3) = 236
recvmsg(3, 0xbfb89410, 0) = -1 EAGAIN (Resource temporarily unavailable)
pselect6(5, [3 4], NULL, NULL, {0, 8000000}, {NULL, 8}) = 1 (in [4], left {0, 7993016})
read(4, "j", 8192) = 1
clock_gettime(CLOCK_MONOTONIC, {5735, 529161383}) = 0
pselect6(5, [3 4], NULL, NULL, {0, 8000000}, {NULL, 8}) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5735, 539123236}) = 0
recvmsg(3, 0xbfb89450, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\212\32\v\0\1\0\1\0\7\0\200\0\0\0\0\0\0\0\377\377\2\0\36\0\2\3\16\0\0\0\36\0"..., 672}, {NULL, 0}, {"", 0}], 3) = 672
recvmsg(3, 0xbfb89410, 0) = -1 EAGAIN (Resource temporarily unavailable)
pselect6(5, [3 4], NULL, NULL, NULL, {NULL, 8}
--- Snip ---


And not to complain as DWM has been my favorite desktop for the past years, but
did you notice st getting a bit large? ;-) Granted, XFT font rasterizing and
color effects are somewhat needed.



-- 
Roger
http://rogerx.freeshell.org/
Received on Wed Mar 04 2015 - 02:21:04 CET

This archive was generated by hypermail 2.3.0 : Wed Mar 04 2015 - 02:24:07 CET