测试 openSUSE 镜像速度的小工具

1赞

如果有人劳烦下载并运行了一下, 麻烦复制一下结果, 我也不确定一些参数的设置是否有问题.

呃,这种下载测试不能模拟真实情况…真实情况是卡在下载 metadata…我的代码复杂度虽然高,但考虑的也多一些…

我好像测速代码已经写完了,就差修改源的代码就能发布了…这个礼拜看看把完全体弄出来

1赞

哈哈哈, 我主要是练习, 不会写的东西, 就翻你的代码. 我对计算机网络那块不是很了解, 几乎没学过…

我也没学过,摊手…不过 traceroute + 物理距离 + ping 速度 + 下载 metadata 速度我觉得应该可以适应国内糟糕的网络环境了…大部分镜像不是大文件慢而是小文件慢,我也不知道为什么,100+ mb 的 kernel 安装飞快,6mb 的 metadata 能下载超时…

1赞

这有什么区别嘛, metadata 不就是服务器上的几个配置文件嘛…

不,是 repo 的 package metadata,可以看成是一个索引…

我们可不可以直接调用 zypper 或者修改 /etc/zypper/repo.d 然后轮流切换每个镜像, 比如 non-oss 那个仓库. 然后安装一两个软件包, 并读取输出的结果就可以.

这样就真实还原了, hhhhh :)

这个思路没玩过,不过听起来非常的正确,可以用 docker image 配合 golang 做一个 :nerd_face:

1赞

这里有如何用 golang 操作 docker,只要拉取一个 openSUSE 镜像,研究研究怎么传递命令获取输出就行了

只用 zypper --root=~/.cache/Tumbleweed 也可以弄出一个 “容器 “差不多的功能,不断切换 /.cache/tumbleweed/etc/zypp/repos.d/tumbleweed.repo 里的链接,记录一下 refreash 和 download only 的时间就可以。

rankmirror-ng/test_zypper.go at master · shenlebantongying/rankmirror-ng · GitHub

sudo zypper --root=~/.cache/Tumbleweed --no-gpg-checks  ar -c https://download.opensuse.org/Tumbleweed/repo/oss Tumbleweed
sudo zypper --root=~/.cache/tumbleweed --no-gpg-checks  refresh
sudo zypper --root=~/.cache/tumbleweed --no-gpg-checks  install --no-recommends --download-only VIM 
~/.cache/tumbleweed> tree
.
├── etc
│   └── zypp
│       └── repos.d
│           └── tumbleweed.repo
├── run
│   └── zypp.pid
├── usr
│   └── lib
│       └── sysimage
│           └── rpm
│               ├── Index.db
│               └── Packages.db
└── var
    ├── cache
    │   └── zypp
    │       └── solv
    │           └── @System
    │               ├── cookie
    │               ├── solv
    │               └── solv.idx
    ├── lib
    │   └── rpm -> ./../../usr/lib/sysimage/rpm
    └── log
        └── zypp
            └── history

2赞

这个方案比 docker 更好 :nerd_face:

可以改进的地方:

  1. 随机包而不是 VIM
  2. golang tmpfs 放到内存里搞会更快
  3. 不要每次都添加源,直接改 .repo file 然后 refresh

我回头改一下。

BTW,rankmirror-ng 已经完全体了。下一步是添加新加入的源,然后 systemd timer。

到时候可以比较一下哪个更快,这个也没优化运行速度。

1赞

v2 版本也搞完了,就是不知道是我超时设置的小还是什么原因,无论多大的包都没速度,还需要在真机上测试一下。

那你 Git push 呀 :mage:

在 v2 branch 里。

1赞

你可以注释掉 os.RemoveAll 那行,然后去 /tmp/rankmirror-ng-* 的文件夹去执行 zypper —root,结果是一样的,我怀疑是不是这些 mirror 本身出问题了。

openSUSE 的长毛象账号说了 Tumbleweed mirror 之前出问题了,我怀疑是不是现在都在 rsync 新的所以下载不了

我尝试了一下单线程的版本,是可以用的,

可能是我没加 —no-confirm……然后一直不 confirm 就超时了 :sweat_smile:

1赞