Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance issues? #38

Closed
ioquatix opened this issue Feb 4, 2020 · 17 comments
Closed

Performance issues? #38

ioquatix opened this issue Feb 4, 2020 · 17 comments
Assignees
Labels

Comments

@ioquatix
Copy link

ioquatix commented Feb 4, 2020

This seems super weird, but when I use progress.advance(1), I get a bunch of syscalls:

215.06 connection/s [========================================================================================================================================  ] 986/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.64 connection/s [========================================================================================================================================  ] 987/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.74 connection/s [========================================================================================================================================  ] 988/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.69 connection/s [========================================================================================================================================  ] 989/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.71 connection/s [========================================================================================================================================= ] 990/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.61 connection/s [========================================================================================================================================= ] 991/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
214.54 connection/s [========================================================================================================================================= ] 992/1000 ( 0s/ 4s)openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-1.24.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/console-1.8.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/nio4r-2.5.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/timers-4.3.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-pool-0.2.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http1-0.10.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/async-http-0.50.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http-0.13.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-http2-0.10.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-hpack-1.4.2/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/protocol-websocket-0.7.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mapping-1.1.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/samovar-2.1.4/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/strings-ansi-0.1.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-progressbar-0.17.0/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-cursor-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/tty-screen-0.7.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/unicode-display_width-1.6.1/lib/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/site_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/2.7.0/x86_64-linux/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/vendor_ruby/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/ruby/2.7.0/fiddle.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 16
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/samuel/.rbenv/versions/2.7.0/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 16
openat(AT_FDCWD, "/usr/lib/kernel32", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

Do you have any require statement embedded in code at some point? Removing the progress bar = no more syscalls of this nature.

@piotrmurach
Copy link
Owner

Hi Sam,

That's some weird issue! Never see it before. I wonder if that's something to do with Ruby 2.7. Do you get the same error, for example, on Ruby 2.6? I wonder if io/console has been removed from Ruby and moved to a separate gem and that's what's causing the issue. It's the most likely thing to change between the Ruby releases.

There are no embedded requires but this gems has couple dependencies. The main code is a single file and all the requires are listed in the file header.

Do you have a test case that replicates this?

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

Using the progress bar with advance and then using strace -e openat

@piotrmurach
Copy link
Owner

Ahh, on closer look I know where these calls are coming from!

This gem uses tty-screen to detect terminal width and the very first size call check uses the windows api to get the console size. The size_from_win_api attempts to load fiddle module and kernel32 lib. On Unix this will silently fail and move on to another check.

This check only makes sense on windows. So I wonder if I should check first the platform and skip to checking different sources. Any thoughts?

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

Since these things are process global, you should probably do it at load time.

if windows
  require 'blah'
  def self.size
    blah
  end
end

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

You can also do things like

begin
  require 'fiddle'
rescue LoadError
  # it wasn't available.
end

@piotrmurach
Copy link
Owner

That's pretty much what happens if you look at the link I provided. However, the fiddle module is loaded fine, it's the search for the kernel32 dll lib that fails on Unix-like system.

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

    def size_from_win_api(verbose: nil)
      require 'fiddle'

Is trying to require fiddle every time the method is called.

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

https://github.com/piotrmurach/tty-screen/blob/c76fbbc9047baa8624a71ec589e60c358efacc4c/lib/tty/screen.rb#L39-L50

You shouldn't be doing it like this, you should probably cache which platform you are on and only invoke the right function. Otherwise every call to size is potentially doing requires/searches.

@piotrmurach
Copy link
Owner

So would you move all the requires up the top of the file and try to load each one of them wrapped in?

begin
  ...
rescue LoadError
end

As for the platform, apart from the windows api call, all the other methods are platform-independent. So not sure caching would help much here. The searches/checks are necessary since the terminal size can change and you want to have a 'fresh' value every time. It's probably down to use whether they want to 'cache' terminal size or keep reading the current value?

@piotrmurach
Copy link
Owner

I agree that probably a good way would be to find a method during the initial check that returns a non-zero size and then cache the actual method name of the call for future checks. I will add some performance tests and refactor. Thanks for bringing this up! 🙌

@piotrmurach piotrmurach self-assigned this Feb 5, 2020
@piotrmurach piotrmurach added the bug label Feb 5, 2020
@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

I guess from my POV, I do prefer something at the class scope like:

if RUBY_VERSION > 2.7
  def size
    # Fast implementation using io/console
  end
elsif RUBY_PLATFORM =~ Windows
  require 'fiddle'
  KERNEL = Fiddle.kernel32 or abort "Could not load kernel"

  def size
    KERNEL.gremlins
  end
else
  # ...
end

@piotrmurach
Copy link
Owner

piotrmurach commented Feb 5, 2020

I'm kind of thinking of moving all the methods to separate files:

# lib/tty/size/windows_api
begin
  require 'fiddle'
rescue
end

module WindowsAPi
   def self.size
  end
end

# lib/tty/screen/io_console
module IOConsole
  def self.size
  end
end

And then require them all(load all the requires) and detect the method that reads size correctly:

require_relative "screen/windows_api"
require_relative "screen/io_console"

module Screen
  @size_cache = nil

  def self.size
    return @size_cache.call if @size_cache

     if WindowsAPI.size
       @size_cache = WindowsAPI.method(:size)
     elsif IOConsole.size
       @size_cache = IOConsole.method(:size)
     else
         ... 
     end
  end
end

@ioquatix
Copy link
Author

ioquatix commented Feb 5, 2020

I guess it depends on how much "engineering" you want to maintain and whether it is a big enough chunk of code to warrant that design. It's not bad... but I still think you are better just using class-level if statements.

@piotrmurach
Copy link
Owner

Agree, I don't want to go overboard with the design. Actually, the main point is to stop the cascading of checks if a known method works - this will defo improve performance. I need to have a play and see. Leave it with me and I will let you know once a 'good enough' version exists. Again, thanks for your help!

@piotrmurach
Copy link
Owner

Fixed in v0.8.0 release of the tty-screen gem which brings a lot of performance improvements.

@ioquatix
Copy link
Author

Thanks for your work here! Much appreciated :)

@piotrmurach
Copy link
Owner

Thanks for reporting and I mean it! This helped me make the tty-screen gem much better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants