Kacam.net

Увидеть мир

Системы: по одному месту за раз

Не «управление памятью» и не «сети», а «насколько далеко промах TLB от отказа страницы» и «сколько кругов до первого байта» — одна карточка копает одно место, пока вы не сможете назвать порядок величины.

Пока эти заготовки есть только на 简体中文.

Как этим пользоваться

Эта серия учит, а не допрашивает: она ведёт, а не давит, пока вам нечего станет сказать. Когда вы застряли, она сначала спрашивает, на каком уровне (не слышал / знаю, но не понимаю почему / понимаю, но не применяю), и только потом решает, что дать. Прямой ответ — лишь после двух попыток вас подвести, и затем просит пересказать своими словами.

Она будет всё время требовать цифры: ответите «есть накладные расходы» или «быстрее» — вас оборвут. Вывод, к которому вы не можете назвать порядок, — это заученный вывод, и именно это здесь тренируется.

С чего начать

  1. Выберите одну, откройте, скопируйте промпт.
  2. Вставьте в совершенно новый пустой диалог, ничего не говорите и ждите первого вопроса.
  3. Готовьтесь называть порядки: сколько наносекунд, сколько микросекунд, во сколько раз медленнее. Сказать «не знаю» нормально — она пометит и пойдёт дальше.

Четыре команды, которые можно бросить в любой момент

  • 跳过 сразу к следующей сцене
  • 换个说法 объяснить это место под другим углом
  • 直说吧 дать полный ответ, а потом заставить меня пересказать
  • 复盘 перейти к финалу и выдать карточку разбора

Три ловушки

  • Не читайте ответы в конце заранее — раздел «как обычно ошибаются» и есть ответ на каждый вопрос.
  • Не хватайтесь за термин. Сказать «это промах TLB» легко; сказать, насколько он дешевле отказа страницы, — вот это и считается.
  • Когда начнёт вас хвалить, напомните про правило «не хвали меня». Вести — не значит нянчить.

Чтобы набрать чувство порядков: случайное чтение, затем первый байт. Для разбора инцидентов: malloc, залипания TCP, переключения контекста. Для многопоточного кода: переупорядочивание и ложное разделение.

Память

一次内存读,硬件走了几步
一次普通的内存读,硬件到底走了几步?
★★★★☆ · около 35 мин
mmap 省掉的到底是哪一次拷贝
「mmap 是零拷贝所以更快」——省的是哪一次,代价换到哪去了?
★★★★☆ · около 30 мин

Параллелизм

改的是不同的变量,为什么互相拖慢
8 个线程各改各的计数器,为什么比单线程还慢?
★★★★☆ · около 30 мин
一次上下文切换,贵在哪
切换的成本主要不是保存寄存器 —— 那是什么?
★★★★☆ · около 30 мин

Хранение

一次 4KB 随机读,时间花在哪
说 SSD 快,快在哪一项上?快多少倍?
★★★☆☆ · около 30 мин

Сеть

第一个字节到达之前,来回跑了几趟
打开一个 2KB 的接口,网络上来回跑了几趟?
★★★☆☆ · около 30 мин
两端都没挂,数据为什么过不去
两端都没挂,数据就是过不去 —— 卡了 40 毫秒还是 200 毫秒?
★★★★☆ · около 35 мин
Эти промпты с открытым исходным кодом Тексты живут в публичном репозитории kacam-net/hero-prompts. Если какой-то давит недостаточно или в его карты на руках не дописана строка — идите и правьте. Появится ли он на сайте, решает отдельно список на этой стороне.