Лаборатория ССД
1 subscriber
3 photos
4 links
Собираем и исследуем инциденты
Download Telegram
Выбор SSD. О чем говорят статистика и экономика. Часть 1

В очередной раз в темах о твердотельных дисках возникает дискуссия насчет правильного выбора модели. При этом аргументы очень часто субъективные и каждый остается при своем мнении.

Однако многие допускают ряд ошибок, одна из самых главных – это отношение к SSD, как к некоторому активу, что приводит к неверной аргументации. Выбирая актив, мы можем исходить из того, что можно взять актив подороже, но он и прослужит нам подольше.

Но твердотельный накопитель не является активом, перед нами типичный расходный материал, который расходует свои характеристики в процессе использования. Ресурс SSD явно завязан на количество перезаписей ячеек и связан с деградацией материала диэлектрика ячеек под воздействием электрического заряда.

А если мы ничего не пишем, то и ресурс не расходуем? Нет, в процессе хранения заряд ячейки постоянно обновляется, а следовательно деградация диэлектрика происходит даже если диск просто включен.

Поэтому отношение к нему должно быть как к любому другому расходнику и его регулярное обновление должно быть заложено в бюджет.

И на этом моменте возникает масса сложностей. Многие сразу говорят, да ну, это что-то для богатых, откуда у нас столько денег. Другие не понимают, зачем нужно менять еще вполне нормальные диски, третьи неправильно рассчитывают сроки.

Общепринятая практика для накопителей, подтвержденная статистикой, говорит о том, что сроком полезного использования диска нужно считать срок гарантии. У SSD к этому добавляется еще и исчерпание ресурса, а там – что наступит раньше.

Почему так? Основным показателем надежности любого диска является годовая частота отказов – AFR. Ее типичное распределение показано на графике, в самом начале эксплуатации – это время называется период приработки – частота отказов высока, в это время проявляется заводской брак, неверно выбранные режимы работы, ошибки монтажа и т.д. и т.п.

График частоты отказов нелинеен, это экспонента, тем более крутая, чем выше нагрузка. Т.е. в нагруженной системе брак и ошибки будут выявлены гораздо более быстро, чем в ненагруженной. Поэтому в ответственных системах имеет смысл проводить нагрузочные тесты перед эксплуатацией.

Далее следует период нормальной эксплуатации, в это время частота отказов примерно постоянна и поддается расчету и прогнозированию, к чему мы еще вернемся. И чем больше дисков у вас в эксплуатации, тем точнее у вас будут расчеты.

Грубо говоря, у нас есть ящик, в нем 100 шариков, 97 красных и 3 черных (3% брака). Покупая 1 шарик, вы с очень большой вероятностью купите красный, а если сильно не повезет – черный.

Покупая два шарика, вы уже можете купить два красных, красный и черный, или, если ну очень сильно не повезет – два черных. Но это все пока на уровне повезло / не повезло.

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

Но если вы купите целый ящик, то гарантированно получите 3 черных шарика на каждую сотню. Понятно, что тут тоже есть вероятность, то она уже варьируется в незначительных пределах, у кого-то в ящике окажется два черных, у кого-то четыре. Купить черных половину ящика нереально статистически.

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

Для этого периода характерно, что отказы начнут нарастать начиная с какого-то времени, и чем дальше, тем более лавинообразным может стать этот процесс.

Особенно опасен он для RAID массивов, так как после выхода одного из дисков резко возрастает нагрузка на оставшиеся, что приводит к увеличению частоты отказов и на практике может привести к эффекту домино, когда оставшиеся диски тоже начнут выходить из строя.

Таким образом эксплуатация дисков в период износовых отказов крайне нежелательна, особенно под высокой нагрузкой.

Продолжение следует…
Выбор SSD. О чем говорят статистика и экономика. Часть 2

Продолжаем, основной период работы диска – это период нормальной эксплуатации, за который мы принимаем гарантийный срок производителя.

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

Срок гарантии – одно из маркетинговых преимуществ, причем преимуществ весомых, в тоже время производитель умеет считать деньги и в убыток себе работать не будет. Поэтому срок гарантии – это именно тот срок, когда частота отказов большей части выпущенной партии остается в пределах запланированной нормы.

Так-так, у отказов есть план и норма? Именно так. Никакого секрета эти данные не представляют и рассчитать планируемую вероятность отказа может каждый.

Интересующий нас параметр называется наработка на отказ (MTBF).

Подождите, - скажет иной читатель, — там ведь какие-то сумасшедшие цифры фигурируют, миллионы часов.

Но этот параметр не является прямым показателем для одиночного диска, объем заметки не позволяет пуститься в подробные объяснения, поэтому сразу перейдем к практическому показателю – годовой частоте отказов (AFR), которая исчисляется в процентах и исчисляется по формуле:

AFR = 1 - exp(-8750*n/MTBF)


Где n – количество дисков с одинаковым значением MTBF в эксплуатации. Зависимость эта нелинейная, т.е. зная частоту отказов одного диска нельзя умножить ее на количество дисков. Чуть позже мы вернемся к этому вопросу.

Теперь о самих показателях. Наработка на отказ для бюджетных дисков, например, для популярного Kingston A400 – 1 млн. часов. Для более дорогих дисков, тех же Samsung, включая топы вроде Samsung 990 Pro – 1,5 млн. часов.

Еще выше это значение у дисков, позиционируемых ближе к корпоративному сегменту - Kingston NV или младших дисков корпоративных линеек Kingston DC или Intel D3 – 2 млн. часов.

Выше только у дорогих и корпоративных – 2,5 млн. часов, но это уже удел не только лишь всех, стоимость таких дисков начинается от 70-80 тыс. руб.

А теперь давайте посмотрим в таблицу, где мы рассчитали годовую частоту отказов для разных значений MTBF.

Можно увидеть, что по мере роста количества дисков в эксплуатации годовая частота отказов начинает стремиться к некоторому среднему значению, т.е. уменьшается для дисков с небольшим MTBF и наоборот.

Так на единичных количествах дисков у нас соотношение в частоте отказов между крайними значениями 2,5 раза, а для 200 дисков это будет всего 1,64 раз.

Но это при условии, что диски работают в нормальном режиме: без перегрузок, перегрева и т.д. и т.п. Так для современных дисков постоянная запись за пределами SLC-кеша – явно не номинальный режим работы.

А дальше говорит экономика. Скажем у нас есть парк на 100 рабочих станций офисного типа. И нам нужны недорогие диски для системы. Выбор у нас между Kingston A400 – 1 млн. часов – 2790 руб. и Samsung 870 EVO – 1,5 млн. часов и 4890 руб.

- Даже не думай, бери Samsung, не экономь на спичках – слышны возгласы из зала, но мы послушаем язык цифр. 💪💪💪

Для одного диска разница в цене будет составлять 75% при 48% разницы в надежности. В целом как-бы есть смысл доплатить. И он есть, если вы берете диск в ответственную рабочую станцию. Тут, конечно, есть лотерея с браком, но если вам повезло, и вы вытащили красный шарик, то проблем быть не должно.

На крупных партиях все меняется, так на 100 экземплярах разница в надежности составит 32%, а на 200 дисках – 20%. А в абсолютных цифрах у вас с высокой долей вероятности вылетит по одному диску обоих марок.

Фактически – паритет. А если так, то зачем платить больше? Напоминаем, у нас офисная рабочая станция и нагрузки для обоих моделей будут номинальными.

А на тех же 100 дисках 75% в цене будут чуть более 200 000 руб. Весомый аргумент при закупках и, тем более, при обосновании необходимости регулярной замены всего парка.

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

Снова спрашивали - снова публикуем.

Данный материал основан сугубо на собственных эмпирических наблюдениях и не является официальной информацией. Сугубо собственные наблюдения и логические выводы основанные на анализе статистики отказов.

Как известно любое оборудование имеет свойство отказывать, диски SSD не исключение и основная задача – вовремя понять, что устройство пора менять, не дожидаясь его отхода в страну вечной охоты.

Традиционные показатели, такие как SMART или счетчики износа здесь помогают мало, поэтому мы проанализировали наши случаи отказов и сделали некоторые выводы, которые не претендуют на истину, но могут оказаться полезны. Выводы применимы как к SSD, так и NVMe дискам.

Есть два параметра, сочетание которых указывает на то, что диск работает не нормально и может в ближайшее время выйти из строя.

1️⃣ Первый – это процент использования активного времени диска, в Zabbix это метрика Disk Utilization, в Windows – активное время. Если данная метрика на достаточное время залипает на уровне 100% без заметной дисковой активности или сопровождается активным чтением с небольшой скоростью – то это первый сигнал неблагополучия.

Да, мы можем нагрузить диск на 100%, но при этом будем видеть реальную адекватную нагрузку на чтение или на запись, либо и то и другое вместе.

Если же диск загружен на 100% в отсутствие видимой активности – то это сигнал о том, что он занят какими-то своими делами и на внешние раздражители не реагирует. В целом такого можно добиться на недорогих дисках удалив сразу большой объем данных и когда диск займется уборкой мусора эффект может быть схожим.

Но, повторимся, продолжительное нахождение диска в 100% нагрузке без видимых на то причин – первый и очень характерный симптом выхода из строя.

2️⃣ Второй симптом – это продолжительное интенсивное чтение, не несущее никакого логического смысла или вовсе противоречащее характеру производимой операции.

Скажем вы открываете закладку в браузере и процесс начинает что-то активно и продолжительно читать с диска, подвисая на некоторое время или полностью. Но объем и характер прочитанных данных никак не соответствует выполняемой задаче.

Либо мы пытаемся записать документ в 1С:Предприятие, но процесс вместо того, чтобы выполнить запись начинает интенсивно читать.

Попытка выяснить, что именно читает процесс успеха не приносит. Он может читать что угодно: свой бинарник, свою базу, своп, кеш.

А может и вообще ничего не читать. Т.е. у нас нет активно читающего процесса, а диск показывает, что его активно кто-то читает. Система или процесс, вызвавший такое поведение или подвисают, или существенно тормозят.

Попутно все это сопровождается 100% загрузкой диска. В Zabbix это можно отследить по увеличению метрике Disk read time (rate), в Windows мы просто видим продолжительное чтение.

👆 Еще раз повторим, что каждая из указанных метрик может вырастать по различным причинам, но их устойчивое сочетание в совокупности с «непонятным» чтением «непонятных» данных – это характерный признак скорого выхода из строя.
​​SMART атрибуты NVMe дисков

Если SATA SSD имели набор атрибутов SMART унаследованный от жестких дисков, многие из которых были бесполезны и не отражали реального состояния устройства, то NVMe диски получили обновленный набор атрибутов, разработанный как раз с учетом специфики устройств.

Ниже будем указывать атрибуты в форме ID Наименование RU (Наименование EN)

🔹 01 Критические предупреждения (Critical Warning) – флаг, указывающий на критические состояния накопителя, не является статическим, может изменять состояние динамически, возможные значения:

▫️0x01 – доступное свободное пространство упало ниже порогового значения
▫️0x02 – температура вышла за пороговые значения (как вверх, так и вниз)
▫️0x03 - надежность подсистемы NVM ухудшилась из-за значительных проблем, связанных со средой передачи данных, включая ошибки, снижающие надежность подсистемы NVM
▫️0x04 – накопитель перешел в режим только чтения
▫️0x08 – устройство энергозависимой памяти (DRAM) вышло из строя

🔹 02 Температура всего устройства (Composite Temperature) – средняя температура накопителя в градусах Кельвина, для перевода в градусы Цельсия необходимо вычесть из значения 273.15. Рекомендации о порогах температур задаются именно для этого значения.

🔹 03 Доступно резервных блоков (Available Spare) – процент оставшихся резервных блоков, в норме 100 и это значение будет уменьшаться

🔹 04 Критический остаток резервных блоков (Available Spare Threshold) - при падении запаса ниже указанного значения для этого поля контроллером будет сформировано событие.

🔹 05 Процент износа (Percentage Used) - показывает процент износа устройства согласно указанного производителем ресурса, 100% обозначает полный износ, значение может превышать 100, максимальное значение 255.

🔹 06 Всего прочитано данных (Data Units Read) - количество прочитанных блоков по 512 байт, единица означает тысячу прочитанных блоков.

🔹 07 Всего записано данных (Data Units Written) - количество записанных блоков по 512 байт, единица означает тысячу записанных блоков.

🔹 08 Количество команд чтения (Host Read Commands) – количество команд чтения, выполненных контролером.

🔹 09 Количество команд записи (Host Write Commands) – количество команд записи, выполненных контроллером

🔹 10 Время занятости контроллера (Controller Busy Time) – время, которое контроллер обрабатывал команды ввода-вывода или когда в очереди находились запросы. Значение представлены в минутах.

🔹 11 Количество включений питания (Power Cycles) – счетчик включений накопителя

🔹 12 Количество отработанных часов (Power On Hours) – общее время работы накопителя в часах, учитывается также время нахождения в режимах энергосбережения

🔹 13 Небезопасных выключений (Unsafe Shutdowns) – количество выключений, когда питания накопителя было отключено прежде, чем он получил от системы уведомление о выключении питания

🔹 14 Количество неисправимых ошибок (Media and Data Integrity Errors) – счетчик неисправимых ошибок ECC, вычисления контрольных сумм CRC или несоответствия LBA

🔹 15 Записей об ошибках в журнал (Number of Error Information Log Entries) – количество записей об ошибках, произведенных в журнал контроллера

🔹 16 Время работы при высокой температуре (Warning Composite Temperature Time) – время, в минутах, которое накопитель работал с превышением порога температуры

🔹 17 Время работы при критической температуре (Critical Composite Temperature Time) - время, в минутах, которое накопитель работал с превышением критического порога температуры

🔹 18 Термодатчик 1 (Temperature Sensor 1) – первый сенсор температуры, точно узнать размещение сенсора можно только из описания диска, чаще всего контроллер.

🔹 19 Термодатчик 2 (Temperature Sensor 2) – второй сенсор температуры, точно узнать размещение сенсора можно только из описания диска, чаще всего NAND.
​​Некоторые особенности расхода ресурса SSD или кому верить?

Сегодня один наш коллега обратил наше внимание на значение счетчиков отдаваемых S.M.A.R.T., а точнее на их несоответствие.

Есть два диска Kingston KC600 на 1024 ГБ с заявленным ресурсом записи 600 ТБ. Данные диски отдают в S.M.A.R.T. не только процент оставшегося ресурса, но и количество записанных данных блоками по 32 МБ.

Что привлекло внимание и насторожило? Согласно полученным данным износ первого диска составил 14%, а второго 18%. При заявленном ресурсе это должно соответствовать 84 ТБ и 108ТБ записанных данных.

Однако реально диски записали 53 ТБ и 52 ТБ, причем больший износ оказался у того диска, что записал меньше.

Странно…

Но внизу есть у нас еще один показатель - TLCWrites32MiB – который показывает количество блоков по 32 МБ, реально записанных в TLC. Здесь мы как раз можем оценить такой параметр как усиление записи (write amplification).

Путем несложных вычислений для первого диска получим 465 ТБ, что соответствует коэффициенту WA 8,7. Это говорит о том, что фактически на один записанный логический блок диск делает примерно 9 записей. Данный коэффициент не является постоянным и зависит от характера записи, единовременного объема, прошивки диска, параметров кеширования и т.д. и т.п.

У второго диска этот параметр оказался еще выше, при меньшем количестве логических записей – 566 ТБ. И это как раз соответствует показанному самим диском износу. Что касается усиления записи, то этот коэффициент для второго диска еще выше – 10,9, т.е. 11 физических записей на 1 логическую.

Сами абсолютные цифры записи в TLC никакого практического интереса не представляют, так как мы не знаем верхнего порога по этому параметру. Нет, зная процент износа и абсолютное значение мы можем рассчитать верхний порог, но зачем?

В отрыве от процентов это просто сферические цифры в вакууме. Поэтому счетчика в процентах нам достаточно, а запись в TLC без процентов лишена практического смысла.
И вот тут мы подходим к вопросу: а кому верить?

В первую очередь надо верить счетчику диска в процентах износа. Он рассчитывается на основе реального количества записи в TLC, где ресурс измеряется не в единицах объема данных, а в количестве перезаписей ячеек.

Заявленный в описании диска ресурс – TBW – это некое среднее по больнице количество записанных данных с учетом некого среднего коэффициента усиления WA. Ориентироваться на него можно, брать за некую константу нельзя.

Потому что даже если вы знаете ресурс и знаете средний объем ежедневно записываемых данных, то вы все равно не знаете для какого WA рассчитан этот ресурс и какой у вас фактический WA.

Что касается наших дисков, то для них можно попробовать рассчитать реальный ресурс по логической записи. Для первого диска он получится 378 ТБ, для второго 288 ТБ. Т.е. фактически вдвое меньше заявленного.

Это, кстати, объясняет и различные заявления в духе «диск А – отстой, помер, не выработав и половины ресурса», или «диски В – круть, работают вдвое больше заявленного».

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

Как быть? Если диск предоставляет данные в износе в процентах – ориентируемся только на них. Если таких данных нет, то берем в расчет логическую запись, но ставим триггер далеко от пороговых значений.

Где именно начинать бить тревогу? Сложный вопрос, но при отсутствии в S.M.A.R.T. иных показателей о замене диска следует начинать задумываться после того, как ресурс снизится более чем на 50%.
Как устроен полевой транзистор с плавающим затвором или почему деградирует флеш-память

Комментарии показали, что не все пользователи ясно представляют себе физические процессы, проистекающие в ячейках памяти и поэтому делают неверные выводы, данная заметка призвана устранить этот пробел.

Мы намеренно упростим модель работы, чтобы обеспечить ее понимание широкому кругу читателей что-то помнящих со школьного курса физики.

Начнем с того, что такое электрический ток – это перемещение заряженных частиц. Такие частицы могут быть отрицательно заряженные – электроны и положительно заряженные – дырки (это официальный термин, на самом деле дыркой является положительно заряженный ион).

Чтобы носители заряда начали двигаться нам необходимо дать им стимул, т.е. обеспечить разность потенциалов (подать напряжение). В этом случае свободные электроны начнут двигаться в сторону плюса, дырки в сторону минуса.

Чем выше разность потенциалов, тем быстрее будут двигаться заряженные частицы и выше будет их энергия движения, переданная им электромагнитным полем

Важным условием для протекания тока является наличие в материале свободных заряженных частиц (электронов и дырок). В металлах электроны слабо связаны с ядрами атома и могут свободно двигаться по материалу. Такие материалы называются проводниками.

В диэлектриках, наоборот, свободных носителей заряда нет и атомы крепко удерживают свои электроны, поэтому они не проводят электрический ток.

Основа ячейки памяти – полевой транзистор с плавающим затвором, его схема показана на рисунке. Но пока представим, что плавающего затвора у нас нет и мы получим просто транзистор с изолированным затвором.

Если потенциал затвора относительно истока является нулевым (нет напряжения), то электроны свободно перемещаются от истока к стоку, транзистор открыт, по нему течет ток.

Но стоит нам подать на затвор напряжение, как заряженные частицы изменят направление движения и путь от истока к стоку будет невозможен. Транзистор закрыт. Регулируя напряжение на затворе, мы можем управлять тем количеством электронов, которые могут течь от истока к стоку и тем самым регулировать ток через транзистор.

Теперь о плавающем затворе. В транзисторе с плавающим затвором при подаче напряжения на управляющий затвор электроны начинают течь в его сторону и преодолевая диэлектрик попадают на плавающий затвор.

После того, как мы снимем напряжение с управляющего затвора заряд на плавающем затворе, останется, так как электроны не могут отправиться обратно – им мешает диэлектрик.

Но как они смогли попасть на плавающий затвор? При появлении напряжения на управляющем затворе электромагнитное поле придает электронам энергию и разгоняет их, они на скорости бомбардируют атомы диэлектрика и выбивают из них электроны, которые в свою очередь выбивают электроны из соседних атомов.

Это явление называется лавинным пробоем, на короткое время в диэлектрике появляются свободные носители заряда и по нему течет ток. Как только мы снимаем напряжение с управляющего затвора – диэлектрик приходит в норму и перестает пропускать заряженные частицы.

Теперь плавающий затвор содержит некоторый заряд и управляет током через транзистор даже при отсутствии управляющего напряжения. По сути, перед нами простейшая ячейка энергонезависимой памяти.

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

Понятно, что подобное воздействие не улучшает свойства материала диэлектрика и он со временем начинает деградировать. Атомы начинают хуже удерживать электроны, и они начинают освобождаться при меньших энергиях.

А это значит, что кто-то из электронов, которые спокойно не сидят, через него проскочит. И чем хуже свойства диэлектрика – тем чаще это будет случаться. Ячейка перестанет держать заряд и станет непригодна как элемент памяти.
​​Диагностика SSD

В комментариях к вечерней заметке подняли тему диагностики SSD, что достаточно актуально при покупке б/у техники.

Одной из популярных программ для диагностики дисков является Victoria HDD/SSD, но в случае с твердотельными накопителями она не сильно поможет.

С ее помощью можно выявить явный брак памяти либо ее сильный износ, но только на участках, занятых данными. Для пустых участков контроллер с большой долей вероятности отдаст вам ноль, не читая память.

И в этом главное отличие твердотельника от жесткого диска. Диск не знает, что находится в секторе и поэтому будет физически читать его, даже если там ноль. SSD – знает и если ячейка пустая, то зачем ее читать?

Таким образом Victoria покажет вам только то, что диск пора выкидывать, объективного состояния диска вы не получите.

Единственный вариант получить достаточно объективную информацию о диске – это S.M.A.R.T и хорошо если диск выдает в нем процент износа (или оставшийся процент ресурса). Это основной показатель, на который следует ориентироваться, так как рассчитывается он по реальному количеству перезаписей ячеек.

При его отсутствии обращаем внимание на параметры логической записи и сравниваем ее с заявленным ресурсом, но помним, что этот показатель достаточно относительный, так как реальное количество записанных на диск данных будет больше на коэффициент усиления записи – WA, который является величиной переменной и зависит от многих внешних факторов.

Если вы не хотите руками изучать S.M.A.R.T, то неплохим вариантом будет утилита от производителя, если она, конечно, показывает здоровье диска. На эти данные вполне можно опираться.

Если же их нет, то смотрите на выработанный ресурс, при его снижении более чем на 50% диск желательно поменять (так как реальный объем записанных во флеш данных с учетом WA нам неизвестен).

Что касается самых бюджетных дисков, тех же китайцев, то там и к параметрам S.M.A.R.T надо относиться с осторожностью, так как он может показывать то, что хочет его «производитель», а не то, как обстоят дела на самом деле. Наглядный пример – датчик температуры у многих дешевых дисков, который вечно показывает некоторое значение, либо никогда не превышает некий верхний порог.

Также неизвестно качество памяти в таких дисках, например, вы можете столкнуться с таким явлением, как деградация флеша, когда он перестает держать заряд.

Т.е. вы нормально записываете файл и думаете, что там все хорошо. Но через день-другой вы уже не сможете его прочитать, потому что заряд с ячейки начнет стекать. При этом внешне все выглядит благополучно и узнать о проблеме вы сможете только при чтении файла.

Хуже всего, что происходит такое в первую очередь на холодных данных и узнать о таком дефекте вы сможете далеко не сразу.

Поэтому б/у китайца лучше сразу поменять, даже, при стеснении в средствах, на второго китайца, новый хотя бы гарантированно отработает некоторое время.

А в целом вывод простой: инструментов, гарантированно позволяющих оценить состояние твердотельных накопителей нет. Мы можем ориентироваться либо на косвенные признаки, либо на данные, предоставленные нам производителем в S.M.A.R.T. Но помним, что единого стандарта на этот счет нет и каждый производитель отдает туда только то, что хочет и не факт, что делает это добросовестно.