What to Expect Here?

  1. Technical Stuff that might be Interesting (see the Github profile at the first link below)
  2. Work-related Posts as a PhD Candidate (see his CV at the second link below)
  3. Everyday Life of a Trivial Human Being

实验室新机器安装步骤检查单

本检查单适用于在 PACMAN 实验室 安装新的服务器. 对于其它使用场景, 可视情况进行参考. 购买前 根据使用需求确定型号 PCIe 的连接方式是否符合预期 内存通道是否充足 在机房寻找一个合适的位置来放置机器, 需考虑如下因素 机柜的空位与承重能力 电源是否充足 网络 (如需使用 IB 网, 与需要的交换机是否足够近) 根据 CPU arch 确定是否接入某个 slurm 进行管理 现有的 slurm clusters: ja (AMD Epyc), nico (Intel Skylake) 注意: 除非这台机器永远只有一个人使用, 否则强烈建议接入 slurm 进行管理 起一个合适的 Hostname 向网络管理员申请一个合适的固定 ip 机器上架与硬件配置 (机房内) 检查机器完好 正确安装导轨 对机器的整体外观, 序列号进行拍照 插入系统盘和必要的存储, PCIE 设备 注意: 插入额外的 GPU 资产也需要事先对序列号和整体进行拍照 根据分配的固定 IP 配置 BMC 机器基础配置 (可远程) 在 NetBox 上更新相应信息, 包括但不限于序列号, 资产号, GPU 在 BIOS 中配置 CPU Sub-numa Clustering 以确保访存性能正确 Intel 简称 SNC, AMD 简称 NPS 可能在 ACPI 或 North Bridge 选项中 (视型号不同) PXE 引导安装 OS 机器软件配置 安装必要的基础软件 htop iotop iftop vim-common numactl rsync psutils ipmitool g++ 根据 Harry 的教程 配置 LDAP Client 安装 libnss-ldapd 和 libpam-ldapd 配置正确的服务器地址, base dn 和 LDAP 数据项 安装 nfs 客户端 安装 nfs-client nfs-common 挂载对应的 /home 配置 slurm 客户端 安装 libmunge-dev libmunge2 munge slurmd slurm-wlm libpam-slurm-adopt libpam-slurm libpmix-dev libpmi2-0 libpmi0-dev libpmi0 将主节点的 munge key 同步到新机器 /etc/munge/munge....

December 13, 2023 · 1 min · laekov

本网站的崩溃与重建

由于升级系统升挂了(说来话长…) 原本跑在青岛阿里云 ecs 上的 shiruku 无了. 于是决定迁移到 Hugo. 目前姑且能用了, 且保留了之前的大部分内容. 之后还会继续修缮. 顺便开个坑记录一下这次的经历. 升级然后挂了 在 12 月 5 号这一天, laekov 看到自己的青岛阿里云服务器还跑着 ubuntu 18.04 (i686), 于是决定对它进行一个 dist-upgrade. (好像也没啥原因) 没想到 do-release-upgrade 说没有新的版本, 于是 laekov 直接在 sources.list 里把 bionic 换成了 jammy, 然后愉快地 apt update / upgrade 了一顿. 然后疑似 kernel 还是 4.19, laekov 感到疑惑, 但是没多想就重启了机器. 没想到重启之后服务器 ping 不通了, 还好 aliyun 提供了 vnc, 连过去一看 kernel panic, 读不出镜像. 还好重启之后发现有一个旧的 kernel 可以启动, 于是和 harry 一拍脑门, 决定跑一遍 initramfs, 然后这下好了, 新的旧的都启不动了....

December 5, 2023 · 1 min · laekov

CentOS 的防火墙和 ldap login

最近在实验室遇到一些情况必需搞一台 centos 的服务器, 但是还是想给它配置我们常用的一些东西, 于是踩了一些坑, 作一个记录. sshd 在别的端口 我们用这个来提供外网的仅公钥的访问, 然而 cent 里面配了 sshd_config 里的 port 之后竟然没法从别的机器访问到这个 port. 关掉 selinux 也没用, 最后发现需要 disable firewalld. (什么企业级安全) sssd ldap 无法 auth 相比 debian 底下使用 libnss-ldapd 和 libpam-ldapd, cent 下面用的是一个叫 sssd 的玩意. 然后使用 authconfig 来进行配置. 然而配好了之后可以 id 一个用户 , 却不能 getent. 发现需要在 sssd 配置文件里加上这个. enumerate = true 然而还是无法用 ldap 用户密码登录, 一通查发现是因为 SSSD always uses an encrypted channel for authentication, which ensures that passwords are never sent over the network unencrypted....

September 21, 2023 · 1 min · laekov

魔改 python-dbg

最近在一些奇怪的地方使用 pytorch. 那里的 python 十分的鬼畜, 以至于 python-debug 用不了. c 的栈打出来大概是这样的. #110 0x00004ffff061c03c in _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python-3.6.8/Python/ceval.c:3351 #111 0x00004ffff061865c in PyEval_EvalFrameEx (f=0x6, throwflag=8387296) at ../Python-3.6.8/Python/ceval.c:754 #112 0x00004ffff06192fc in _PyEval_EvalCodeWithName (_co=0x58000044c980, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=0, kwnames=<optimized out>, kwargs=0x58000d8621b8, kwcount=2, kwstep=1, defs=0x580000449340, defcount=2, kwdefs=0x0, closure=0x0, name=0x5800003431c0, qualname=0x5800003431c0) at ../Python-3.6.8/Python/ceval.c:4166 #113 0x00004ffff0619768 in fast_function (kwnames=<optimized out>, nargs=0, stack=0x58000d8621b8, func=0x58000296f6b8) at ../Python-3.6.8/Python/ceval.c:4992 #114 call_function (pp_stack=0x500000804400, oparg=<optimized out>, kwnames=<optimized out>) at ....

September 5, 2023 · 1 min · laekov

python-dbg 使用中遇到的 auto-load-safe 问题

用 gdb 的 py-bt 来看一个 python 程序的调用栈是一个非常有用的工具. 然而今天在集群上尝试使用这个功能的时候发现了一些问题. 使用 debian 12 自带的 python3.11 时可以正常工作, 而使用 spack 安装的 python3.10 的时候就无法工作了. 最初怀疑 configure python 的时候没有带 --withdebug, 于是重新装了一个 python 还是不管用. 然后在仔细观察输出的时候发现 gdb autoload 竟然还有 safe path 一说, 故需要在 .gdbinit 中加入 add-auto-load-safe-path /home/spack/* 才能安全工作. (具体见这篇文档 )

September 2, 2023 · 1 min · laekov

那一夜你喝了酒 改编版

那一夜我喝了酒带着醉而回 然后发现你还在那公司 深夜加班 我仿佛看到我的未来 默默踌躇起来 然后躺在地上思考人生 为何存在 刹那间我突然了解这样生活就是理所应该 什么时候该给你挚爱 什么时候我又应该走开 哦 哦

August 16, 2023 · 1 min · laekov

在 slurm 任务完成时通过 IM 软件向自己发送通知

代码地址 这事情好像原理挺简单的. 让 srun 在完成的时候给自己发个邮件, 用个脚本一直 tail 邮件, 并喂到 tg 的 bot 里, 根据 chat id 来发消息.

April 3, 2023 · 1 min · laekov

2019-nCOV Infection Log at Dec 2022

2022.12, 中国人民防疫三年,最后每人发烧三天。 大防疫运动,其去势甚至猛于其来势。半月之内,北京一城,阴阳掺半矣。15日,我终于显著感到不适,预知自己将感染也。起意攒此文,以供未来之考。 Day0: 2022.12.15 昨夜跑了 F4 模拟赛车联赛,得第三,大喜,饮啤酒一罐,无不适。半夜,喉咙巨疼,疼醒,喝水后略有好转。早上起床之后喉咙继续疼,精神不振,收到消息称昨日白天同处一屋某君阳矣。 上午测了抗原,阴,工作于宿舍,午饭后前往实验室,继续工作,处理数据集一个。后开组会,开始上背部酸疼,嗓子疼加重,精神萎靡,遂大点外卖一顿,趁还有食欲饱餐以储能,然后收拾好工作所需之电器,回宿舍躺平,始作此文,静待下一步之变数。 拖延三年,余与新冠病毒终有一战。既阳之,则战之。古语有云,生死有命,富贵在天。炎黄子孙宁病夫乎? Day1: 2022.12.16 昨晚睡觉前做了一次抗原, 等了两分钟没阳, 直接睡了, 今早起床发现昨夜的抗原有弱弱的阳性线, 再测一次, 真阳了. 所以确实是 day1, 昨天的感觉完全没错. 睡得不太好, 翻来覆去, 持续在冷和热之间徘徊, 身上也比较酸痛, 嗓子也疼. 嗓子里有痰的感觉, 但是我知道那其实是我肿胀的扁桃, 试图咳痰只会让情况变得更糟, 于是忍着了. 早上起床之后喉咙疼痛感有所减弱, 但是略有发烧的畏寒和皮肤触痛. 感觉是在低烧, 但是因为没有体温计所以无法确认. 脊柱附近的肌肉比较酸疼, 坐在沙发上姿势并不太舒服. 早上开了一个线上会, 不太能集中注意力(倒是和平时差不多). 开完就继续躺了. 中午戴好口罩下楼买饭, 晒太阳和呼吸新鲜空气感觉有所好转, 遂决定在中厅晒会儿太阳. // 阳了其实是小小地逃避工作的好机会. 下午外卖买到了体温计, 起初体温比较正常, 太阳将近落山的时候开始发烧, 一度烧到 38 度. 练了会儿车, 练不动, 听说室友也阳了, 诚邀他回来和我一起开 covid party (躺平). 前半夜体温很高, 不太睡得着, 在被子里抱着热水袋捂汗. 鼻子里有不对的味道, 怀疑是过敏性鼻炎导致鼻窦炎了. 过了一会体温下降, 开始头疼, 很像是鼻窦肿大压迫神经. 但是也管不了那么多了, 先睡. 嗓子还是一如既往地疼. Day2: 2022.12.17 七点过胃疼疼醒, 吃了蛋糕, 抱着热水袋继续睡....

December 15, 2022 · 1 min · laekov

使用 gdb 调试多机程序的方法

最近写了一些 mpi 程序, 但是有 bug, 且只有在多机上能够复现. 然而因为工程太大, 编译一次需要时间比较长, 所以反复 print 也并不方便解决问题. 而且集群上也没有图形界面, ssh -X xterm 的方法不太好使. 所以需要一些新的解决思路. laekov 将目光瞄准了 tmux. 用 tmux new-session command 就可以在目标机器上新开一个进程, 跑 gdb. 然而 tmux 并不能继承环境, 所以需要再包一层脚本来重新加载环境 (这倒是和多机跑 mpi 程序差不多). 此外, 为了不需要手工一个一个进程地去 gdb 里开始, 可以用 gdb -ex 'r' --args command args 来让它自动开跑. ex 还可以用来批处理设断点之类的, 非常方便. 另一个问题是 laekov 用的集群配置了 slurm, 是用 srun 来启程序的. 但是 tmux 命令会立即退出, 进程是跑在该用户的另一个进程里的, 而且这俩还没有父子关系, 无法用 wait 来等. 但是 srun 的进程退出之后 slurm 就认为这个进程跑完了, 甚至会清理 worker 上该用户的所有进程....

September 22, 2022 · 1 min · laekov

如何使用 windows 笔记本的指纹解锁 linux

众所周知, laekov 在办公室有一台 nuc 装了 linux 主要用于工作, 另有一台笔记本用于其它工作. 作为一个锁屏强迫症, 每次 laekov 站起来去干啥的时候都会把两台电脑锁屏, 回来之后再分别解锁. 笔记本可以用指纹或者 iwndows hello, 而 nuc 就只能敲密码了. 不巧的是它还直接暴露在公网上, 于是密码设得比较长. 所以 laekov 希望用 windows 上的指纹来解 kde 的锁屏. 然后发现直接使用命令 loginctl (un)lock-session <id> 就可以实现(解)锁 kde. 配合 ssh 和 autohotkey 就可以实现一键开关锁. 但是这还是需要再额外按一次键. 然后发现 windows 有一个叫 task scheduler 的东西, 可以在锁屏和解锁的时候触发一些命令, 于是愉快地接入了 ssh 之后就可以方便地一次性解锁两台电脑辣!

July 18, 2022 · 1 min · laekov