im_roriri | Unsorted

Telegram-канал im_roriri - 螺莉莉的黑板报

2449

Subscribe to a channel

螺莉莉的黑板报

我最近看到日本「结婚必须改姓」这件争议的脉络,想到了很多基于「社会习俗」所创造出来的人为对立,比如性别。大多数人都应当认同,身份证上不应该标你是什么肤色的人种,其中缘由因为过于直白我们就不继续展开。按照这个逻辑,我觉得可能也不应该标你是什么民族、你的性别是什么。

各种表单上面询问你的「生理性别」在某种意义上是在委婉地问你「有没有一根老二」。一方面,区分「男女」在一个进步的文化观念中是没有必要的。或者我们更进一步问,区分了能拿来干什么?你会因为一个人有没有老二就做出什么不同的对待吗?How dare you, huh?唯一值得聊的可能是「厕所的规划」,但中性厕所是一种实操上可以存在的事物,而且它可以通过牺牲一小部分空间利用效率换来极大的人文关怀和另外一些层面上的效率:不会再出现一个厕所排大长队但是另外一个厕所不排队的情况,这在某种程度上才是公平的。

当代进步派普遍认为性别是流动的,性向也是流动的。你可以同时兼有阳刚的特质和阴柔的特质,二者也不是一条轴上的两端,谁都可以有纤细的一面,你也有权力把它表达在外部或者放进内心不让人看到。而性向方面,或许一个「顺直男」没办法跟另外一个「男人」做爱,但是说不定看到一位装有义乳身材火辣但保有阳具的跨性别者,内心当中还是会泛起疑问「说不定我有点 gay?」。C'mon, everyone is a little bit "gay", 所以在玩女装山脉的时候你才会感到困惑。

我不认同「骄傲」、「LGBTQ********」这种花里胡哨的标签,它们应当是这个社会自然的一部分,它们应当自然到不需要任何庆祝,就像吃饭喝水一样。基于同样的理念,我也不喜欢「女权」这个词,或者将「父权」和「女权」两个词分野。「父权」是一个既存的事实,我们要打破这个事实不一定需要创造一个对立面,也可以解构这个概念的核心,找到其中的荒谬,以消抹其存在的正当性。

让一个有毒的概念消失的方式可以是和平的,我们可以牵起彼此的手创造一个紧密的团体。这种正向积极的解决方式能让那些打着仇恨生意的家伙悻悻而归,而这些家伙消失没了生意和算盘,我们才能获得一个包容的言论空间。

所以,你有一根老二么?(笑)

Читать полностью…

螺莉莉的黑板报

写字的本子左半本拿来做情绪贴纸产品实验了,不浪费东西

Читать полностью…

螺莉莉的黑板报

回程的时候嗑了一颗密雪冰城的三块钱冰淇淋,然后我肚子就开始叽里咕噜响了。

里面的奶制品是真的。

Читать полностью…

螺莉莉的黑板报

ˊ_>ˋ 我发现情绪手帐蛮好玩的,把情绪卡打成贴纸每天剪下来几张贴在本子上,记一件事情,可以玩好久

Читать полностью…

螺莉莉的黑板报

墨鱼蛋: https://jandan.net/t/5940787
OO: 151 XX: 14
蛋友24d2062119dc: 跨年失败不是跨月失败,得是13月1日
OO: 60, XX: 0

Читать полностью…

螺莉莉的黑板报

听说签证中心有免费 SIM 卡,拿护照去领一张

Читать полностью…

螺莉莉的黑板报

我必须说虽然健身运动台的风格有很多种,但是这种风格的我还是第一次见……

yellowdude_co/videos" rel="nofollow">https://www.youtube.com/@yellowdude_co/videos

Читать полностью…

螺莉莉的黑板报

https://www.youtube.com/watch?v=Q2uIhtiOLVA

Читать полностью…

螺莉莉的黑板报

浮华暂借问: https://jandan.net/t/5940733
OO: 180 XX: 1
老白: 哇擦,居然不是武侠片
OO: 39, XX: 0
东岳整人: 国足:踢球就踢球,玩魔法有什么意思?
OO: 24, XX: 1
mlwy0: 我去!看动画感觉太扯了,看视频彻底沉默了。。。
OO: 6, XX: 0

Читать полностью…

螺莉莉的黑板报

微软暗示 Windows 活跃用户数量相比三年前已减少近 4 亿

微软最近在一篇博客中提到,目前全球“有超过 10 亿台设备在使用 Windows”。这一数据看似庞大,但相较 2022 年官方公开的“14 亿台设备”使用记录,减少了将近 4 亿。尽管微软并未正面回应,但这基本等同于默认 Windows 市场份额正在大幅下滑。

Читать полностью…

螺莉莉的黑板报

I apologize to all my local schizophrenics. I owe you an apology. I wasn't really familiar with your game

Читать полностью…

螺莉莉的黑板报

https://www.solidot.org/story?sid=81674

Читать полностью…

螺莉莉的黑板报

https://www.youtube.com/watch?v=pAolG02dHB0

Читать полностью…

螺莉莉的黑板报

饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了饿了

Читать полностью…

螺莉莉的黑板报

正常一个语言要引入一个复杂度,通常都是为了解决一个问题,比如 Rust 引入了 Borrow Checker 那一整套的确是解决了很多管理上的心智复杂度。但是你们 JS 是随机游走,为了写出 High Performance 的 JS 得把代码写得比 C 还丑,但凡用点方便玩意都给你成百倍的性能惩罚……

Читать полностью…

螺莉莉的黑板报

本来心情烦躁,直到看见这些傻鸟

Читать полностью…

螺莉莉的黑板报

#要闻推送
医生把输卵管错当阑尾切除,院方致歉
香港明爱医院发生一起医疗事故,医生在进行微创阑尾切除术时,误将患者的输卵管切除。医院已向患者及家属致歉,并成立了“根源分析委员会”进行调查。这起事故被认为是不可饶恕的医疗事故,医院方面表示将加强手术安全核查和医护人员培训。
虎嗅网

Читать полностью…

螺莉莉的黑板报

我不理解,这种把荔枝打成酱的产品谁会买……而且感觉打完好像洨……

Читать полностью…

螺莉莉的黑板报

https://www.youtube.com/watch?v=yXREq0vSm3o

Читать полностью…

螺莉莉的黑板报

https://www.maoken.com/freefonts/26125.html

Plex 修 Bug 的版本

Читать полностью…

螺莉莉的黑板报

感觉折腾一轮下来 BPIO 的卡牌描述系统快要接近图灵完备了……

Читать полностью…

螺莉莉的黑板报

https://www.youtube.com/watch?v=tX1wPVOIFYA

????

Читать полностью…

螺莉莉的黑板报

https://item.jd.com/100243271022.html

Читать полностью…

螺莉莉的黑板报

Discord 从今天的更新开始,有年龄限制的 channel 要上传身份证,或者面部扫描判断年龄了
(According to this provider:面部扫描是本地模型运行的,数据不会上传)

Читать полностью…

螺莉莉的黑板报

一个月前伊洪分享了一个 How is GNU/yes so fat: https://www.reddit.com/r/unix/comments/6gxduc/how_is_gnu_yes_so_fast/ ,很有意思,今天我来演进式学习一下(安全声明:螃蟹人慎入😀

baseline: GNU/yes 9.4: yes | pv >/dev/null 结果是 6.23 GiB/s.

第一版是 libc put:

void main() {
while(puts("y"));
}

pv 指标 239M/s,用 perf stat -e cycles:u,cycles:k 发现 95% 的时间花在用户态,想想就不对劲,你一个理论上 IO bound 的进程怎么大量时间在用户态玩耍 buffer,扔掉 libc 吃我 syscall。

第二版 write(..., 2)
void main() {
while(write(1, "y\n", 2));
}

pv 8.13MiB/s,比 put 整整下降了 96%。这次 user:sys 大概是 16%:84%,好像也不太对劲,用户态一共就十条指令占了 16% 的 cycle,内核态是在吃屎吗。这一版 IPC 是 1.42,固然比第一版 put 的 IPC 3.77 低了三倍,但是就算想办法微操让 IPC 乘以 3,IO 也追不上 put。问题不在 IPC 而在过多低效 syscall。

第三版 bulk write(..., 65536)
int main(void)
{
static char buf[BUF_SZ];
for (size_t i = 0; i < BUF_SZ; i += 2) {
buf[i] = 'y';
buf[i + 1] = '\n';
}
while(write(STDOUT_FILENO, buf, BUF_SZ));
}

这一版 IO 已经飞起来了,直接到达了 5.4 GiB/s,但仍然不及 baseline。用 perf stat -d 发现
            724.68 msec task-clock                       #    0.724 CPUs utilized             
2,000,509,009 cpu_core/instructions/ # 0.91 insn per cycle (78.20%)
TopdownL1 (cpu_core) # 77.0 % tma_backend_bound

我专门贴出来这个结果就是想说,可能有人起手就 IPC 低啦,77% 的 tma_backend_bound 啦,但我始终强调,优先关注 on-cpu 状态。这个版本的 yes 只有 0.724 的 CPU 利用率,大量 off cpu context switch,解决这个先。

bpftrace oneliner 发现是 1 状态 (S)切出极多,直接 offwaketime --state 1 走一波:
    waker:           pv 71935
__x64_sys_splice
__splice_from_pipe
__wake_up
-- --
schedule
pipe_write
__x64_sys_write
target: write65536 71934

我把结果里最重要的信息裁剪出来如上,发现此版 yes 的海量 off cpu 切出都是由于 pipe 阻塞。熟读 TLPI 的工程师已经意识到方向了:扩大 pipe buf size。

第四版 fcntl 扩大 PIPE_SZ
fcntl(STDOUT_FILENO, F_SETPIPE_SZ, 1048576);

只需一行即可,1048576 是 sysctl fs.pipe-max-size 告诉我的。这一版结果已经略微超越了 GNU/yes,高达 6.35 G/s,baseline 6.23 G/s。这时候再 perf stat -d 发现 0.997 on cpu,心满意足。然后再去解决 0.71 IPC 和 80.9 % tma_backend_bound。

两次 topdown (perf stat -M tma_backend_bound_group, perf stat -M tma_memory_bound_group) 发现 24.8 % tma_store_bound 是 IPC 瓶颈。懂了,用户态到内核态的内存拷贝。

第五版,零拷贝。
int main()
{
fcntl(STDOUT_FILENO, F_SETPIPE_SZ, 1048576);

static char page[4096];
for (size_t i = 0; i < (size_t)4096; i += 2) {
page[i] = 'y';
page[i + 1] = '\n';
}

const int iovcnt = 65536 / 4096;
struct iovec iov[iovcnt];
for (int i = 0; i < iovcnt; ++i) {
iov[i].iov_base = page;
iov[i].iov_len = 4096;
}

while (vmsplice(STDOUT_FILENO, iov, iovcnt, 0));
}

这一版的结果达到了 baseline 的四倍 28G/s,IPC 2.51。这一版 IPC 是上一版的约四倍,IO 也达到了约四倍。这时候再做一次 context switch 统计,和上一版相比,发现 offcpu 切出变多了;其实不需要这么细节,直接看 perf stat -d 发现 cpu 利用率微微下降了,上一版的 0.997 到这一版的 0.993,说明更多时间阻塞在 pipe,瓶颈已经开始转移到 pipe 读端 pv 进程了。

第六版,io_uring
开始对 pv 做 perf topdown,发现 64.2 % 的 tma_serializing_operation。pv 已经使用了 splice syscall,我试着写了一个 io_uring + splice 的版本发现并不能更快,目前就卡在这里。虽然我觉得还有优化的空间,先 brain dump 在这里,我要先去忙一段时间其他主题。

bonus:

整个话题的起源其实是 https://github.com/jedisct1/yes-rs/ 这个 rust 版本的 yes 被发到 hacker news。我知道项目是在开玩笑,但我本着严肃对待一切自吹自擂、以防不明真相的路人把玩笑当真,说一点得罪螃蟹人的话:

这个 rust 版本的 yes 慢爆了,甚至只有上面版本二 write(..., 2) 的一半,慢到了 4 M/s。而就算如此它居然还敢说
⚠️ WARNING: This code is so BLAZINGLY FAST it might cause
temporal paradoxes. Use responsibly.

它但凡能达到 GNU/yes 的性能我都敬它是个有技术的项目,结果就这?写出超快的 yes 确实是技术活,但,😀忍着不开地图炮。

Читать полностью…

螺莉莉的黑板报

©Pixeldoshi

Читать полностью…

螺莉莉的黑板报

ˊ_>ˋ 这个轻食炖牛肉加一大把辣椒粉跟青椒酱还蛮好吃的

Читать полностью…

螺莉莉的黑板报

https://www.zaobao.com/realtime/china/story20250630-7026668

Читать полностью…

螺莉莉的黑板报

【本报讯】6月18日,美国商标审判和上诉委员会(TTAB)驳回了针对甲骨文公司(Oracle)的欺诈指控。指控称,甲骨文在2019年商标续展时提交了Node.js网站截图,涉嫌误导美国专利商标局(USPTO),因为Node.js并非甲骨文的产品。然而,欺诈指控并非本案核心,当前争议主要集中于商标的通用性及是否已放弃使用的问题。起诉方认为,「JavaScript」是编程语言的通用名称,而非甲骨文的专属品牌。

案件进展将加快,甲骨文须在8月7日前回应商标取消申请,并于9月6日起进入证据披露阶段。

Src: https://deno.com/blog/deno-v-oracle4

Читать полностью…

螺莉莉的黑板报

https://www.youtube.com/watch?v=9Ks5XU-hxQI

Читать полностью…
Subscribe to a channel