• Life

    中午和赛赛玩翻跟斗的游戏,前面没掌握好,一直把赛赛头朝下的时候就扔床上了,不过他觉得好玩,一直喊,再来再来。

    昨天德州太晚了,搞到12点过后。还一边玩一边在看 skopeo copy image 遇到 EOF 报错的事。 只有往 ECR 其中一个 Region 复制的时候才报错,往其他 Region 或者是 ACR,都没问题。 今天开了一个 Case。

  • Life

    看见工作上的事情就头疼。觉得好没劲。

    今天好像啥也没干,处理了几个小 Case,什么磁盘满了,什么磁盘只读了,还有 neutron 转 Cilium。

    然后统计了一下 Mirror 和 Hub 的相关数据。 现在到 Mirror 的请求约 20% 透传到后端,感觉这个效果还不错吧。

    看了一下 temporal,这东西还要写 Go 或者 Java 代码来提交任务?还没有 API?这样的话,感觉有点不好用。

    回家回家,头痛。

  • Life

    昨天中午金桥聚餐,下午带赛赛去小姨家里。晚上去九亭饭店吃饭。

    周末两天有点冷。

    今天晚上要回来的时候,赛赛爬楼梯玩,把楼梯上放着笔记本和笔扔到了地上,我严厉的说,你去捡回来。他下去一边捡一边说,宝宝是小天使,以后不扔东西了。

    晚上回来又同步了一下 OY 的镜像到 RB,后面就把 OY 下线了。

  • Macos Add Ip

    ifconfig lo0 alias 127.0.0.2

  • Mirror Through To Backend Twice

    问题1,一个打到 Docker Registry Mirror 的请求,为什么透传了两次到后端呢?

    问题2,Proxy 里面的 inflight 又能起什么作用呢?

    问题3,为什么有的机器把同一时间到来的所有请求都打到了后端,而有的机器只透传了非常少的几个请求,后面就走缓存了呢?

    问题 1 回答,因为 pbs.copyContent(ctx, dgst, w) 里面请求了一次,pbs.storeLocal(ctx, dgst) 里面又请求了一次。

    问题 2 回答,inflight 是为了避免两个同样的请求都 storeLocal 。

    问题 3 Debug 方向:

    1. inflight 打印一下,看看哪哪请求进到里面?
    2. 本地调试,断点看一下 filesystem.GetContent 是哪里调用来的。
    3. pbs.serveLocal(ctx, w, r, dgst) 之前先 sleep random,拿一个小 Layer 来测试的时候,sleep 短的那个请求肯定已经完成了,所以只能会一次请求到后面。
    4. 拿大 Layer 来测,两个请求应该会一起透传到后面吧。

    5. filesystem.GetContent 是 Stat 的时候,需要先读取 link 内容,然后再去 stat link 文件。在 (bh *blobHandler) GetBlob -> desc, err := blobs.Stat(bh, bh.Digest) 里面有一次,然后再 serveLocal 里面又有一次。

    之前问题 3 一直稳定复现的,但是加了一些 Debug 日志之后,这个问题复制不了了。。

  • Life

    赛赛不咋理我了,让他亲亲,他直接说“不行”。

  • Return Copy From Map

    package main
    
    import (
    	"fmt"
    	"sync"
    )
    
    func main() {
    	m := map[string]sync.Mutex{}
    	lock := sync.Mutex{}
    	fmt.Printf("%p\n", &lock)
    	m["baidu.com"] = lock
    
    	get := m["baidu.com"]
    	fmt.Printf("%p\n", &get)
    }
    
    # go run a.go
    0xc0000b2008
    0xc0000b2020
    
  • Tty

    登陆同一个机器,

    root@1bd768a7944f:~# ps l
    F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
    4     0     1     0  20   0   4252  3452 -      Ss   pts/0      0:00 bash
    4     0     9     0  20   0   4252  3548 -      Ss   pts/1      0:00 bash
    0     0    36     1  20   0   2660   520 -      S+   pts/0      0:00 cat
    0     0    37     9  20   0   5824  1152 -      R+   pts/1      0:00 ps l
    

    上面一台执行 cat:

    root@1bd768a7944f:~# ps l
    F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
    4     0     1     0  20   0   4252  3480 -      Ss   pts/0      0:00 bash
    4     0     9     0  20   0   4252  3548 -      Ss   pts/1      0:00 bash
    0     0    40     1  20   0   2660   584 -      S+   pts/0      0:00 cat
    0     0    42     9  20   0   5824  1144 -      R+   pts/1      0:00 ps l
    

    下面一台执行 date > /dev/pts/0 ,上面一台出现日期,怎么理解?

    正常:

    terminal -> pty master -> line discipline -> tty driver -> pty slave -> cat

    日期这个??

    pty slave -> tty driver -> line discipline -> pty master ?????

    编译一下 script.c 来看一下 script 里面的 pty master 和 slave 都读到了什么。

  • Life

    昨天赛小赛玩围棋,我拿手上一个棋子问他,这是几个,他说“一个”。

    我拿两个再问他,他说“两个”。

    我拿三个再问他,他说“太多了,数不了”。

    哈哈哈

  • dockerd 里面使用 lz4 解压缩测试小结

    线上 dockerd 版本: Docker version 19.03.12, build 48a66213fe

    实验使用的 dockerd 版本:v20.10.9

    目的

    为了加速容器的启动,docker pull 做为其中的一环,调研一下如何加速 docker pull。

    局域网环境问题下,docker pull 里面的解压的时间占了大头。Lz4 的解压速度比当前 Docker 默认的 gzip 要快不少,我们就在 Docker 里面实际测下看效果。