Jan. 15th, 2012

madf: (Default)

Початок

Для початку коротко підсумую висновки зроблені у попередньому пості.

  • C++ не надає ніяких механізмів динамічного завантаження коду;
  • Динамічне завантаження коду можливе у мові C;
  • Для створення екземплярів плаганів використовуються функції-фабрики, а для уравління - абстрактний інтерфейс;
  • Щоб уникнути name mangling функція-фабрика помічається як export "C", при цьому цілком і повністю втрачається інформація про тип функції;
  • Доступ до функції можливий тільки через reinterpret_cast із void *.

Усе це в купі означає що за такого підходу ні про яку type safety і мови бути не може. Виходу немає?

Вихід є! У C++ можливо реалізувати систему плагінів на базі динамічно завантажуваних бібліотек і при цьому настільки типобезпечну, на скільки це взагалі можливо у C++! Як же цього добитись?

Read more... )
madf: (Default)
Після потопу у Тайланді почавсі масовий мор винтів, який зачепив і мене - у серваку розсипався RAID1. Один із двох WD Green Caviar по терабайту кожен наказав довго жити. При чому проблема з рейдом у мене була уже давно, мабуть із рік. При чому спочатку я вважав що це проблема з NFS, потім став грішити на реалізацію софтового рейду у Linux, а останнім часом задумувався про 12309. Проблема проста - дуже високий write latency. Не постійно, але двох разах із трьох при наборі комбінації :w у vim на файлі на NFS на RAID1 на WD Green Caviar редактор заклякав секунд на 10-15. Я, взагалі-то, людина спокійна, навіть дещо флегматична, але коли ця комбінація записана десь у підкорку і набирається сама по десять разів на хвилину - мимоволі стискаю кулаки і хочеться когось убити. Ну або хоча б розтрощити щось.
Да, спочатку я грішив на NFS і кілька місяців поспіль грався з версіями ядер, ключами експорту і монтування, nice і ionice. Я навіть прибрав майже все із NFS крім самого цінного (проекти) і самого великого (терабайт все-таки). Грався я без толку, ні ключі ні версія ядра ні хитрі BFQ з BFS не дали абсолютно ніяких результатів. Рівно як і *nice. Грішив я і на RAID, але hdparm показував прекрасну швидкість читання. Грішив на винти, але SMART був чистий.
Потім колега підкинув мені хінт: "WD Green Caviar + Linux = убей свой диск!". Я швиденько зашив на флешку FreeDOS, залив туди wdidle3 і підправив idle-timeout. На момент корекції винти уже назбирали по п’ятсот тисяч паркувань головки. Але і це не допомогло.
А потім один винт здох. Просто тупо здох. Разом із десятками винтів колег і друзів. Як раз у той час як космічні кораблі бороздятьзаводи стоять, ціни ростуть, мораль падає. І тоді той-же колега-адмін, що порадив мені скоригувати idle timeout показав що ціни на звичайні домашні винти і на WD Raid Edition зрівнялись! Ну одразу бігти у магазин я не став, бо не у всякому магазині вони є. Та і викинути сходу більше трьох тисяч гривень було дещо стрьомно. Благо, проблеми почались на одному із серваків що я обслуговую, і я натякнув господарям що треба б купувати нормальні винти.
Подивившись як працюють RE4 на місці Green Caviar я таки рішився і минулого тижня за допомогою [livejournal.com profile] rais_t_lin замовив собі парочку. І через два дні вони вже були у мене. Після тривалого ресінка за старого вінта на новий, а потім короткого танцю з бубном на збирання RAID і ще одного ресінка між двома новими система запрацювала.
Латентність моментально впала до десяти мілісекунд! Боже, як же приємно працювати коли нічого не тормозить! Правда, торохтять вони сильніше і гріються градусів на 10 більше. Але на те вони і "серверні". Проміжок часу між покупкою винтів і першим ресінком заставив сильно понервуватись. Було б прикольно втратити всю інформацію уже маючи на руках носії на заміну. Та тепер моя душа знову спокійна :)

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 29th, 2025 01:03 pm
Powered by Dreamwidth Studios