| Summary: | %check под mipsel | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Ivan A. Melnikov <iv> |
| Component: | zstd | Assignee: | placeholder <placeholder> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | glebfm, jqt4, ldv, placeholder, sin, vt |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
| URL: | https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=876416#17 | ||
|
Description
Ivan A. Melnikov
2018-12-30 16:24:43 MSK
Интересно, а почему на x86 помещается, там ведь тоже есть это 32-битное ограничение на размер адресного пространства. (In reply to comment #1) > Интересно, а почему на x86 помещается, там ведь тоже есть это 32-битное > ограничение на размер адресного пространства. А у нас на i586 ulimit -s не меньше? К тому же, на mips* старший бит адреса используется как признак kernel space, так что адресного пространства там в два раза меньше чем на x86* той же разрядности. (In reply to comment #2) > (In reply to comment #1) > > Интересно, а почему на x86 помещается, там ведь тоже есть это 32-битное > > ограничение на размер адресного пространства. > > А у нас на i586 ulimit -s не меньше? Нет, у нас дефолтный ядерный ulimit -s. Поскольку i586 собирается на x86_64, то и ulimit -s одинаковый. (In reply to comment #1) > Интересно, а почему на x86 помещается, там ведь тоже есть это 32-битное > ограничение на размер адресного пространства. В честь очередного обновления zstd я решил всё-таки разобраться, что там за магия. Оказалось, что количество потоков в zstd (в частности управляемое через -T<number>) ограничено сверху специальной константой, ZSTDMT_NBWORKERS_MAX. По умолчанию эта константа равна 200, так что на самом деле 999 потоков в тестах не создаётся никогда, в том числе и на x86_64. Получается, что 200 worker'ов в 4 Гб адресного пространства на i586 влезают, а в 2 Гб на mipsel -- нет. Помимо пространства для стека, каждому потоку нужны различные буферы, так что количество возможных worker'ов заметно меньше, чем количество потоков, которые можно успешно создать. В частности, на mipsel на моих тестах в конфигурации по умолчанию можно запустить не больше 79 worker'ов. На всякий случай я снизил ограничение на размер пула потоков до 64х. Так что теперь исправление для mipsel выглядит так: http://git.altlinux.org/people/iv/packages/?p=zstd.git;a=commitdiff;h=baf76935219eaf52cee57700a37cd29722fa42b6 С таким изменением пакет успешно собирается. А в Debian просто тупо выключили тесты. Apparently, it was fixed in 1.5.0-alt1 by upstream commit v1.5.0^2~3^2~1: https://github.com/facebook/zstd/commit/cb0cad9b79669185677383d8d7fd502257374fd2 |