Slow USB transfers

Has anyone deduced the difference?

It’s not an easy task. Kernel config files contain ~ 11k parameters. Manjaro kernel has about 1200 different parameters compared to FerenOS kernel.

Description of parameters is very short and doesn’t tell you much unless you’re Linus Torvalds. It’s not like “change this parameter and get +500% writing speed”. It’s all about buffers, buses, events, devices, trees, maps, tables and so on.

So in order to find necessary parameters one will have to change n parametes, recompile manjaro kernel and perform a writing speed test. In a very optimistic scenario where n=1 one will need to do ~1200 tests. If n=2 - 1200^2 ~1.4 million tests, n=3 - 1200^3 ~ 1.7 billion tests…

Those tests could literally take years to perform. I don’t think someone is gonna be willing to spend so much time to find the culprits.

1 Like

Surely the entire 1200 doesnt pertain to USB read/write?

1.7 billion tests would be like dialing every phone number starting with all zeros and changing 1 digit at a time. I understand not everyone is fluent in low level coding like assembly, and some commands and parameters are probably esoteric without understanding the hardware and protocols themselves, but surely it can be deduced much easier by simple comparisons between OS’s at obvious points. I mean, FerenOS did it somehow and that somehow can be replicated.

Happy hunting - extracted when booted the latest stable Feren ISO

Feren OS: sysctl --all

If we pull the data and run them through grep - ignoring all that begins with dev. and net.

curl http://ix.io/4FBr > feren.txt && grep -v -e 'net\.' -v -e 'dev.'
abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.binfmt_misc.status = enabled
fs.dentry-state = 191309        138363  45      0       103286  0
fs.dir-notify-enable = 1
fs.epoll.max_user_watches = 3595219
fs.fanotify.max_queued_events = 16384
fs.fanotify.max_user_groups = 128
fs.fanotify.max_user_marks = 130838
fs.file-max = 9223372036854775807
fs.file-nr = 9248       0       9223372036854775807
fs.inode-nr = 83156     0
fs.inode-state = 83156  0       0       0       0       0       0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 123050
fs.lease-break-time = 45
fs.leases-enable = 1
fs.mount-max = 100000
fs.mqueue.msg_default = 10
fs.mqueue.msg_max = 10
fs.mqueue.msgsize_default = 8192
fs.mqueue.msgsize_max = 8192
fs.mqueue.queues_max = 256
fs.nr_open = 1048576
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.pipe-max-size = 1048576
fs.pipe-user-pages-hard = 0
fs.pipe-user-pages-soft = 16384
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 0
fs.quota.writes = 0
fs.suid_dumpable = 0
fs.verity.require_signatures = 0
kernel.acct = 4 2       30
kernel.acpi_video_flags = 0
kernel.auto_msgmni = 0
kernel.bootloader_type = 114
kernel.bootloader_version = 2
kernel.bpf_stats_enabled = 0
kernel.cap_last_cap = 40
kernel.core_pattern = |/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h
kernel.core_pipe_limit = 0
kernel.core_uses_pid = 0
kernel.ctrl-alt-del = 0
kernel.dmesg_restrict = 0
kernel.domainname = (none)
kernel.firmware_config.force_sysfs_fallback = 0
kernel.firmware_config.ignore_sysfs_fallback = 0
kernel.ftrace_dump_on_oops = 0
kernel.ftrace_enabled = 1
kernel.hardlockup_all_cpu_backtrace = 0
kernel.hardlockup_panic = 0
kernel.hostname = feren
kernel.hotplug = 
kernel.hung_task_all_cpu_backtrace = 0
kernel.hung_task_check_count = 4194304
kernel.hung_task_check_interval_secs = 0
kernel.hung_task_panic = 0
kernel.hung_task_timeout_secs = 120
kernel.hung_task_warnings = 10
kernel.io_delay_type = 1
kernel.kexec_load_disabled = 0
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.persistent_keyring_expiry = 259200
kernel.keys.root_maxbytes = 25000000
kernel.keys.root_maxkeys = 1000000
kernel.kptr_restrict = 1
kernel.max_lock_depth = 1024
kernel.max_rcu_stall_to_panic = 0
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0
kernel.msg_next_id = -1
kernel.msgmax = 8192
kernel.msgmnb = 16384
kernel.msgmni = 32000
kernel.ngroups_max = 65536
kernel.nmi_watchdog = 0
kernel.ns_last_pid = 4734
kernel.numa_balancing = 0
kernel.oops_all_cpu_backtrace = 0
kernel.osrelease = 5.15.0-69-generic
kernel.ostype = Linux
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.panic = 0
kernel.panic_on_io_nmi = 0
kernel.panic_on_oops = 0
kernel.panic_on_rcu_stall = 0
kernel.panic_on_unrecovered_nmi = 0
kernel.panic_on_warn = 0
kernel.panic_print = 0
kernel.perf_cpu_time_max_percent = 25
kernel.perf_event_max_contexts_per_stack = 8
kernel.perf_event_max_sample_rate = 100000
kernel.perf_event_max_stack = 127
kernel.perf_event_mlock_kb = 516
kernel.perf_event_paranoid = 4
kernel.pid_max = 4194304
kernel.poweroff_cmd = /sbin/poweroff
kernel.print-fatal-signals = 0
kernel.printk = 4       4       1       7
kernel.printk_delay = 0
kernel.printk_devkmsg = on
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.pty.max = 4096
kernel.pty.nr = 1
kernel.pty.reserve = 1024
kernel.random.boot_id = 2d8e0003-1ea8-462d-9884-3041d5150283
kernel.random.entropy_avail = 256
kernel.random.poolsize = 256
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = 723cc34f-9fc4-42ee-a8b2-2ad3326ea154
kernel.random.write_wakeup_threshold = 256
kernel.randomize_va_space = 2
kernel.real-root-dev = 0
kernel.sched_autogroup_enabled = 1
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_deadline_period_max_us = 4194304
kernel.sched_deadline_period_min_us = 100
kernel.sched_energy_aware = 1
kernel.sched_rr_timeslice_ms = 100
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_schedstats = 0
kernel.sched_util_clamp_max = 1024
kernel.sched_util_clamp_min = 1024
kernel.sched_util_clamp_min_rt_default = 1024
kernel.seccomp.actions_avail = kill_process kill_thread trap errno user_notif trace log allow
kernel.seccomp.actions_logged = kill_process kill_thread trap errno user_notif trace log
kernel.sem = 32000      1024000000      500     32000
kernel.sem_next_id = -1
kernel.sg-big-buff = 32768
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
kernel.soft_watchdog = 1
kernel.softlockup_all_cpu_backtrace = 0
kernel.softlockup_panic = 0
kernel.stack_tracer_enabled = 0
kernel.sysctl_writes_strict = 1
kernel.sysrq = 176
kernel.tainted = 2048
kernel.task_delayacct = 0
kernel.threads-max = 126175
kernel.timer_migration = 1
kernel.traceoff_on_warning = 0
kernel.tracepoint_printk = 0
kernel.unknown_nmi_panic = 0
kernel.unprivileged_bpf_disabled = 2
kernel.unprivileged_userns_clone = 1
kernel.version = #76~20.04.1-Ubuntu SMP Mon Mar 20 15:54:19 UTC 2023
kernel.watchdog = 1
kernel.watchdog_cpumask = 0-7
kernel.watchdog_thresh = 10
kernel.yama.ptrace_scope = 1
user.max_cgroup_namespaces = 63087
user.max_fanotify_groups = 128
user.max_fanotify_marks = 130838
user.max_inotify_instances = 128
user.max_inotify_watches = 123050
user.max_ipc_namespaces = 63087
user.max_mnt_namespaces = 63087
user.max_net_namespaces = 63087
user.max_pid_namespaces = 63087
user.max_time_namespaces = 63087
user.max_user_namespaces = 63087
user.max_uts_namespaces = 63087
vm.admin_reserve_kbytes = 8192
vm.compact_unevictable_allowed = 1
vm.compaction_proactiveness = 20
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 1500
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 1500
vm.dirtytime_expire_seconds = 43200
vm.extfrag_threshold = 500
vm.hugetlb_shm_group = 0
vm.laptop_mode = 0
vm.legacy_va_layout = 0
vm.lowmem_reserve_ratio = 256   256     32      0       0
vm.max_map_count = 65530
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.min_free_kbytes = 67584
vm.min_slab_ratio = 5
vm.min_unmapped_ratio = 1
vm.mmap_min_addr = 65536
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
vm.numa_stat = 1
vm.numa_zonelist_order = Node
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.page_lock_unfairness = 5
vm.panic_on_oom = 0
vm.percpu_pagelist_high_fraction = 0
vm.stat_interval = 1
vm.swappiness = 60
vm.unprivileged_userfaultfd = 0
vm.user_reserve_kbytes = 131072
vm.vfs_cache_pressure = 100
vm.watermark_boost_factor = 15000
vm.watermark_scale_factor = 10
vm.zone_reclaim_mode = 0

We then do the same thing on our Manjaro system - leaving out the pastebin - depending on your system you may want to exlude other lines as well especially if you use libvirt you will have to add the pattern -v -e 'fs\.binfmt_misc' as well (use sudo to avoid the permission denied lines )

sudo sysctl --all | grep -v -e 'net\.' -v -e 'dev.' -v -e 'fs\.binfmt_misc'

Now if we pipe the results into a couple of files, we can then use comm to compare the two lists and display the differences.

grep -v -e 'net\.' -v -e 'dev.' feren.txt | sort > feren-filtered.txt
sudo sysctl --all | grep -v -e 'net\.' -v -e 'dev.' -v -e 'fs\.binfmt_misc' | sort > mjro-filtered.txt

The resulting list provides how Feren compares to Manjaro

comm -3 feren-filtered.txt mjro-filtered.txt
fs.aio-nr = 0
        fs.aio-nr = 640
fs.binfmt_misc.status = enabled
fs.dentry-state = 191309        138363  45      0       103286  0
        fs.dentry-state = 801259        766038  45      0       149704  0
        fs.epoll.max_user_watches = 14608406
fs.epoll.max_user_watches = 3595219
fs.fanotify.max_user_marks = 130838
        fs.fanotify.max_user_marks = 524988
        fs.file-nr = 25376      0       9223372036854775807
fs.file-nr = 9248       0       9223372036854775807
        fs.inode-nr = 648521    460
fs.inode-nr = 83156     0
        fs.inode-state = 648521 460     0       0       0       0       0
fs.inode-state = 83156  0       0       0       0       0       0
        fs.inotify.max_user_instances = 1024
fs.inotify.max_user_instances = 128
        fs.inotify.max_user_watches = 1048576
fs.inotify.max_user_watches = 123050
fs.nr_open = 1048576
        fs.nr_open = 1073741816
        fs.protected_fifos = 1
        fs.protected_hardlinks = 1
        fs.protected_regular = 1
        fs.protected_symlinks = 1
fs.quota.syncs = 0
        fs.quota.syncs = 8
fs.suid_dumpable = 0
        fs.suid_dumpable = 2
        kernel.arch = x86_64
kernel.bootloader_type = 114
        kernel.bootloader_type = 33
        kernel.bootloader_version = 1
kernel.bootloader_version = 2
        kernel.cad_pid = 1
kernel.core_pattern = |/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h
        kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 0
        kernel.core_pipe_limit = 16
kernel.core_uses_pid = 0
        kernel.core_uses_pid = 1
kernel.dmesg_restrict = 0
        kernel.dmesg_restrict = 1
kernel.firmware_config.force_sysfs_fallback = 0
kernel.firmware_config.ignore_sysfs_fallback = 0
kernel.hostname = feren
        kernel.hostname = tiger
kernel.hotplug = 
        kernel.io_delay_type = 0
kernel.io_delay_type = 1
        kernel.kexec_load_limit_panic = -1
        kernel.kexec_load_limit_reboot = -1
        kernel.kptr_restrict = 0
kernel.kptr_restrict = 1
        kernel.ns_last_pid = 25839
kernel.ns_last_pid = 4734
        kernel.numa_balancing_promote_rate_limit_MBps = 65536
        kernel.oops_limit = 10000
kernel.osrelease = 5.15.0-69-generic
        kernel.osrelease = 6.5.0-next-20230831-1-next-git-13643-ga47fc304d2b6
        kernel.perf_event_paranoid = 2
kernel.perf_event_paranoid = 4
        kernel.printk = 4       4       1       4
kernel.printk = 4       4       1       7
kernel.pty.nr = 1
        kernel.pty.nr = 4
kernel.random.boot_id = 2d8e0003-1ea8-462d-9884-3041d5150283
        kernel.random.boot_id = ef3084e3-e0f1-4343-8ff7-3a92a70720fd
        kernel.random.uuid = 44420695-4f34-4eb1-ae04-7f4928010636
kernel.random.uuid = 723cc34f-9fc4-42ee-a8b2-2ad3326ea154
kernel.sg-big-buff = 32768
        kernel.soft_watchdog = 0
kernel.soft_watchdog = 1
        kernel.split_lock_mitigate = 1
        kernel.sysrq = 1
kernel.sysrq = 176
        kernel.tainted = 12800
kernel.tainted = 2048
kernel.threads-max = 126175
        kernel.threads-max = 512685
        kernel.user_events_max = 32768
        kernel.usermodehelper.bset = 4294967295 511
        kernel.usermodehelper.inheritable = 4294967295  511
        kernel.version = #1 SMP PREEMPT_DYNAMIC Mon, 04 Sep 2023 08:26:35 +0000
kernel.version = #76~20.04.1-Ubuntu SMP Mon Mar 20 15:54:19 UTC 2023
        kernel.warn_limit = 0
        kernel.watchdog = 0
kernel.watchdog = 1
        kernel.watchdog_cpumask = 0-127
kernel.watchdog_cpumask = 0-7
        user.max_cgroup_namespaces = 256342
user.max_cgroup_namespaces = 63087
user.max_fanotify_marks = 130838
        user.max_fanotify_marks = 524988
        user.max_inotify_instances = 1024
user.max_inotify_instances = 128
        user.max_inotify_watches = 1048576
user.max_inotify_watches = 123050
        user.max_ipc_namespaces = 256342
user.max_ipc_namespaces = 63087
        user.max_mnt_namespaces = 256342
user.max_mnt_namespaces = 63087
        user.max_net_namespaces = 256342
user.max_net_namespaces = 63087
        user.max_pid_namespaces = 256342
user.max_pid_namespaces = 63087
        user.max_time_namespaces = 256342
user.max_time_namespaces = 63087
        user.max_user_namespaces = 256342
user.max_user_namespaces = 63087
        user.max_uts_namespaces = 256342
user.max_uts_namespaces = 63087
vm.dirty_expire_centisecs = 1500
        vm.dirty_expire_centisecs = 3000
vm.dirty_writeback_centisecs = 1500
        vm.dirty_writeback_centisecs = 500
        vm.hugetlb_optimize_vmemmap = 0
        vm.memfd_noexec = 0
        vm.mmap_rnd_bits = 28
        vm.mmap_rnd_compat_bits = 8

Or you could use meld (if you have it installed)

meld feren-filtered.txt mjro-filtered.txt

Well, from the 1121 lines/parameters, when i compare with meld, only about the half is different :slight_smile: Sounds like an easy job :rofl: And one should really know what one is doing, otherwise to test every possible parameter the combinations will be 2⁵⁰⁰ =3,2733906079e+150 whatever that number means.