Свежие комментарии

Title Comment
Мне казалось, что все эти

Мне казалось, что все эти атомы — наследники P5, минуя и NetBurst и P6. А Core — налсденики P6.

Понаблюдай за ARC. У меня на

Понаблюдай за ARC. У меня на свежем 11.2-STABLE что-то ARC занимает 4.5 гига из 16, при том что Wired-памяти — 15 гигов.
Я как-то на более ранних версиях привык видеть 13-14 гигов ARC'а на той же машине.

Что там wired не ясно :-(

В общем, единственное, что

В общем, единственное, что понятно — то, что и винты, и флешки различаются чем-то довольно мелким и неочевидным, но, собака, СУЩЕСТВЕННЫМ (для этой системы).
Да, WD тоже может работать с физическими блоками по 4К, а в систему отчитываться о логических блоках по 512. Но тогда смысл сравнения утрачен, оба так делают.

$ time make -j5 buildworld
$ time make -j5 buildworld
World build completed on Tue Nov 20 09:45:18 MSK 2018
--------------------------------------------------------------

real    134m7.049s
user    621m27.899s
sys     29m30.579s

134/89 = 1.5

8/5 = 1.6

Короче, если и не ядрами ограничено, то близко к этому.

Ну я вот боюсь, что

Ну я вот боюсь, что
а) или lstat выполняется за линейное время от размера каталога
б) или unlink приводит к тому, что там что-то схлопывается-пересчитывается

Короче, 5млн файлов - это плохо.

Опять же, ну можно же сделать песочницу с 1,10,100,1000,10000 файлов и смотреть насколько быстро ситуация ухудшается.

На снапшоте если только.

На снапшоте если только.
У меня только одна система с zfs. Хотя от разнесения и другим fs должно полегчать, и выбирать имена для "этажей" лучше с конца хеша, там "разброс" больше. А любой файл, который не на нужном уровне, передвигать на нужный (вот кстати и upgrade/downgrade path)

Кстати интересно, при наличии снапшота будет такой же эффект, или это только unlink "навсегда" приводит к таким веселым эффектам.

Ну я про "попробовать".

Ну я про "попробовать".

Ну относительно несложно.

Ну относительно несложно.
Надо только про upgrade path подумать, если я хочу это в апстрим продвигать.

Разнесение по каталогам уж

Разнесение по каталогам уж точно попробовать несложно.

Про остальное готового мнения не имею.

Собственно есть у меня

Собственно есть у меня каталог на zfs dataset -- в нем примерно 5 миллионов файлов с именами в виде хешей (такой дедупликатор для бедных) -- мы по нему идем, и вычищаем файлы у которых st.nlinks == 1, занимает это часы, а не минуты -- я пошел смотреть strace и разбираться как умею.

strace понятно частичный, от двухминутного пробега
Partial `strace -w -c` for process which do readdir/lstat/unlink loop on 5M files in one dir
file names is a base58(sha256(file_content)).

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 66,36   65,516804     1559923        42           getdents
 22,83   22,535192        1178     19118           lstat
 10,80   10,658754       18440       578           unlink
  0,01    0,012003          20       578           write
------ ----------- ----------- --------- --------- ----------------
100.00 98,722753 20316 total

Просто getdents на том же каталоге отрабатывает за 4 минуты (${coreutils}/bin/ls -f /nix/store/.links >/dev/nill).

Потом я запустил очистку повторно, и увидел следующее: (опять же двухминутная выдержка пока оно по "чистому" колупалось)
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 99,84  115,540901        6728     17172           lstat
  0,16    0,187311        5062        37           getdents
------ ----------- ----------- --------- --------- ----------------
100.00 115,728212 17209 total

Собственно вопрос -- что вызывает такое патологическое поведение, и как лечить.
Сам код -- здесь, https://github.com/NixOS/nix/blob/master/src/libstore/gc.cc#L693

У меня скромные идеи запилить fstatat/unlinkat (и то я не уверен, а можно ли unlinkat(dirfd(dir), file) внутри цикла с readdir, и не сломается ли от этого OSX -- там это тоже используют)

Может ли помочь leveling (или как это правильно называется -- когда "abcde..." разносится по каталогам как a/bc/de...")? Могут ли влиять имена файлов (хеши -- там base58(sha256(content))) -- все имена начинаются с "0" или "1" -- может ли это какой-то corner case триггерить? (или я уже на воду дую)

Хочется идей и советов, потому что свои идеи кончились.

Что-то не могу с одного раза

Что-то не могу с одного раза ответить на комментарий, надо завтракать!

Да, конечно united.c (std_pch.cpp) и precompiled headers сильно помогают жизни, хотя я никогда не мерял - насколько именно.

Вообще, поскольку сборка FreeBSD, ну так если поглядывать туда, это процентов на 90 (утрирую) сборка llvm/clang, то может быть там так и сделано, хрен их знает, не вдавался.

А вопрос - конечно давайте.

А вопрос - конечно давайте.

Пока вижу на ~1.5 ватта

Пока вижу на ~1.5 ватта меньшее потребление.
Гипотеза: user будет такой же примерно, ну а wall - понятно что побольше.

Этот ящик пустой

Этот ящик пустой-ненагруженный, пусть поработает.

Запустил, часа через два будет результат, напишу.

Не, RootOnZFS я делал, а

Не, RootOnZFS я делал (давно), а потом проапгрейдил пул, но не загрузчик. Было весело.

Не вижу смысла в / на ZFS в моей конкретной ситуации (даже если кончатся SATA-слоты - перееду с /, /usr, /var на флешку)

То есть вот в той машине, где был root on zfs, я после того случая (там SATA-портов не было избытка, все было занято) именно на USB-флешку и переехал.

Я так понимаю надо делать

Я так понимаю надо делать amalgamation там, где конструкция позволяет (тупо united.c с инклюдами всех файлов в каталоге) -- всякие браузеры так собираются, и дает оно 20-30% времени сборки)

PS я думал у вас / тоже на zfs. (у меня тут вопрос есть, на #zfsonlinux я с ним уже ходил и тут спрошу, если позволите)

Совпадение, конечно, выглядит поразительно

Интересно было бы увидеть результат на Атоме с -j5. Может там упирается не в ядра?

Описанным способом kgdb

Описанным способом kgdb используется на живой системе, он не останавливает исполнение. Это такой удобный тул для чтения памяти.

Исходники лежат на UFS.

Исходники лежат на UFS, obj - тоже.

А includes будут в vnode cache, ну если не с первого раза, так со второго

По идее ARС тоже должен

По идее ARС тоже должен влиять, и скорее в лучшую сторону (все includes с первого вызова компилятора оказываются там)

Переделал на SSD-шке (OCZ

Переделал на SSD-шке (OCZ Vertex2, старый и медленный) и нет ощущения, что на USB-флешке так уж плохо.

Процедура: свежеустановленная система (obj не создан, "первая компиляция"), 11-stable из SVN, make -j10 buildworld

CPU: Intel(R) Atom(TM) CPU C3758 @ 2.20GHz (2200.07-MHz K8-class CPU) real memory = 17179869184 (16384 MB) avail memory = 16520863744 (15755 MB)

На SSD:

World build completed on Mon Nov 19 20:45:09 MSK 2018
 --------------------------------------------------------------
real 87m42.563s
user 627m31.992s
sys 31m6.541s

На флешке (Sandisk Extreme, 64Gb, USB 3.0):

World build completed on Wed Nov 14 10:08:19 UTC 2018
--------------------------------------------------------------
real 89m6.999s
user 628m14.852s
sys 29m52.185s

Если смотреть, к примеру, только на user, то разницы вовсе нет. если на real, то ну процента полтора-два, лень считать точнее.

P.S. На 6300T повторный перебилд (с удалением старого obj) дал другие результаты (чем в первый раз), похоже что если obj не чистить, то там какие-то части берутся старые (вроде depends, ХЗ, не вдавался). Систематизирую, смотрю, думаю :)

C точки зрения FreeBSD:

C точки зрения FreeBSD:
WD: ada1: 1907729MB (3907029168 512 byte sectors)
OCZ: ada0: 228936MB (468862128 512 byte sectors)
Да, смешно кстати, они оба SATA-2, я уже и забыл что такие бывают :)

Более того, WD меньше 2Tb т.е. какие-то приколы "диск больше 2Tb - только UEFI" ну тоже маловероятны.

WD Green 2TB — не совсем

WD Green 2TB — не совсем обычный HDD. У него уже используется Avanced Format, что, по идее, ещё больше сближает его с SSD-дисками. Что ещё больше добавляет абсурда в ситуацию.
А не может ли быть такого, что WD работает в нативном для себя формате с блоками по 4К (который уже свободно поддерживается UEFI), а OCZ — наоборот, работает в режиме совместимости, подсовывая системе данные, что он размечен по 512 байт? И CSM support как раз включает поддержку этих самых «древних» разметок? Полный идиотизм, конечно, но кто знает, кто знает...

«Secure Boot: Custom» и прочие при «Enable Secure Boot: Disabled» вообще должен быть недоступным для модификации. Видимо, разработчики не очень усердно орудуют напильником в процессе подготовки биосов.

Да впроде прав. Я могу только

Да впроде прав. Я могу только скопипастить модный смайлик пожатия плечами.

Ну и это не объясняет, почему

Ну и это не объясняет, почему SATA/HDD/2Tb - с загрузкой все было збс, а SATA/SSD/256Gb - нихрена.
Мне казалось, что оба - block device, устроенные одинаково (и инсталлятор FreeBSD там примерно одну структуру данных делает), я неправ?

UPD: ну разве только partition alignment разный, это да, но может ли быть дело в этом?

Про CSM по счастью известно

Про CSM по счастью известно что это такое. Это поддержка старой загрузки (эмуляция BIOS).

Но почему это место влияет на UEFI boot - не пойму. Почему при выключенном CSM можно включить Legacy загрузку (которая гарантированно НЕ будет работать) - как раз пойму (от лени разработчиков, конечно ж)

Вот за что я «люблю»

Вот за что я «люблю» современные BIOS'ы, ой, простите, UEFI Firmwares — это за документированность.
Там вот справа должен быть Help — он хоть как-то помог понять, что такое этот CSM?

Ну мне вот в каком-то смысле

Ну мне вот в каком-то смысле повезло: собственно инсталлятор FreeBSD с флешки грузится без вопросов и на ура (memstick который). Если бы этого не было - уж не знаю что я бы делал, потому что "ну вот, не грузится", а покупал я через форвардера, возврат - дело непонятное в такой ситуации (с точки зрения ebay - все приехало и ок).

В форумах я наоборот начитался, что на этих матерях pfsense (freebsd) грузится нормально, а вот Linux - не очень.

Похоже, намутили с этим secure boot лишнего, говорю же "custom" тронуть боюсь.

Вот-вот, я писал тут как-о в

Вот-вот, я писал тут как-о в камментах -- наэцсамое недавнр при установке на ноут. Хотел вкорячит фрибсд, так, сяк ковырял, секьюр бут и всё такое -- то грузится, то не грузится, тем более проблемы с вайфаем. Плюнул, начал центос ставить -- с грехом пополам, с одной только флешки, с бубнов в биосе.

Скорее всего из-за новомодных

Скорее всего из-за новомодных DEBUG_FILES (отладочные символы для всех бинарников базовой системы).

Pages

Subscribe to comments_recent_new