Ошибка опережающего чтения от смещения

Системный вызов readahead () сохраняет документ внутри кеша страниц при работе в операционной системе Linux. Каждый раз, когда ядро ​​Linux считывает документы с диска, оно выполняет имитацию опережающего чтения. Когда возникает потребность в одной части документа, ядро ​​немедленно читает следующую часть документа. Например, если другой запрос на эту часть создается позже при последовательном чтении документа, ядро ​​автоматически вернет требуемую информацию. Такая оптимизация является относительно недорогой, поскольку на дисках есть кеши дорожек (очевидно, жесткие диски выполняют опережающее чтение изнутри), а документы обычно распределяются по системе последовательно. Более широкое окно упреждающего чтения может способствовать последовательному доступу к документу, тогда как опережение чтения может быть ненужными накладными расходами для спонтанно доступного документа. Ядро автоматически регулирует длину кадра опережающего чтения в ответ на процент успешных попыток в этом кадре, как указано в разделе «Внутренние части ядра». Если бы ударов было больше, было бы предпочтительнее рама побольше; более узкий экран был бы предпочтительнее, если бы попаданий было меньше. Вызов фреймворка madvise () позволяет программе немедленно управлять размером окна.

Содержание

  1. ВОЗВРАТ РЕЗУЛЬТАТ
  2. ОШИБКИ
  3. ОШИБКИ
  4. Предсказуемость опережения
  5. Преимущества системного вызова Readahead
  6. Меры предосторожности
  7. Заключение

ВОЗВРАТ РЕЗУЛЬТАТ

Каждый раз, когда системный вызов Readahead () завершается успешно, по завершении он возвращает 0. Если он не завершится сам, он вернет −1 при потере через errno, установленную для обозначения ошибки.

ОШИБКИ

  • EBADF:эта ошибка возникает, когда файловый дескриптор fd не может использоваться и, следовательно, не доступен только для чтения.
  • EINVAL:эта ошибка возникает, когда системный вызов readahead () может применяться к fd, потому что это не тип документа.

Чтобы использовать любой системный вызов, например системный вызов readahead, вы должны установить библиотеку manpages-dev, чтобы увидеть ее использование и синтаксис. Для этого напишите в оболочке следующую команду.

sudo apt install manpages-dev

Чтобы использовать любой системный вызов, например системный вызов readahead

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

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead. Нажмите q для выхода с этой страницы.

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead

Вы должны сначала включить библиотеку «fcntl.h» при использовании кода языка C. Параметр fd — это дескриптор документа, который указывает, какой документ должен быть прочитан из вашей системы Linux. Параметр смещения определяет контрольную точку для чтения информации, а счетчик определяет общее количество байтов, которые нужно прочитать. Поскольку ввод-вывод выполняется на страницах, смещение по существу корректируется с понижением до границы страницы, и байты становятся считанными до другого края страницы примерно равными или более чем (смещение + счетчик). Системный вызов readahead () не читает документ до конца. Смещение документа доступного определения файла, на которое ссылается файловый дескриптор fd, сохраняется.

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

Если кто-Если кто-то хочет дополнительно использовать опережающее чтение на языке Cто хочет дополнительно использовать опережающее чтение на языке C

ОШИБКИ

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

Предсказуемость опережения

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

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

Преимущества системного вызова Readahead

При большом количестве оперативной памяти системный вызов readahead имеет следующие преимущества:

  • Уменьшено время инициализации устройства и программы.
  • Производительность была улучшена. Это может быть достигнуто с помощью устройств хранения, таких как жесткие диски, где переключение головок диска между произвольными секторами занимает много времени. Забегая вперед предоставляет системе планирования ввода-вывода гораздо больше требований ввода-вывода гораздо более эффективным способом, объединяя более высокую долю смежных дисковых блоков и уменьшая перемещения головки диска.
  • Ввод / вывод и энергия процессора в целом используются наиболее эффективно. Когда процессор активен, выполняется дополнительный ввод-вывод документа.
  • Когда компьютеру больше не нужно спать в ожидании ввода-вывода, когда запрашиваемая информация действительно была извлечена, переключение контекста, которое потребляет ценные циклы ЦП, уменьшается.

Меры предосторожности

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

Заключение

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

I am currently running a spark job on Dataproc and am getting errors trying to re-join a group and read data from a kafka topic. I have done some digging and am not sure what the issue is. I have auto.offset.reset set to earliest so it should being reading from the earliest available non-committed offset and initially my spark logs look like this :

19/04/29 16:30:30 INFO     
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-11 to offset 5553330.
19/04/29 16:30:30 INFO     
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-2 to offset 5555553.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-3 to offset 5555484.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-4 to offset 5555586.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-5 to offset 5555502.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-6 to offset 5555561.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-7 to offset 5555542.```

But then the very next line I get an error trying to read from a nonexistent offset on the server (you can see that the offset for the partition differs from the one listed above, so I have no idea why it would be attempting to read form that offset, here is the error on the next line:

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets 
out of range with no configured reset policy for partitions: 
{demo.topic-11=4544296}

Any ideas to why my spark job is constantly going back to this offset (4544296), and not the one it outputs originally (5553330)?

It seems to be contradicting itself w a) the actual offset it says its on and the one it attempts to read and b) saying no configured reset policy

I am currently running a spark job on Dataproc and am getting errors trying to re-join a group and read data from a kafka topic. I have done some digging and am not sure what the issue is. I have auto.offset.reset set to earliest so it should being reading from the earliest available non-committed offset and initially my spark logs look like this :

19/04/29 16:30:30 INFO     
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-11 to offset 5553330.
19/04/29 16:30:30 INFO     
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-2 to offset 5555553.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-3 to offset 5555484.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-4 to offset 5555586.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-5 to offset 5555502.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-6 to offset 5555561.
19/04/29 16:30:30 INFO 
org.apache.kafka.clients.consumer.internals.Fetcher: [Consumer 
clientId=consumer-1, groupId=demo-group] Resetting offset for 
partition demo.topic-7 to offset 5555542.```

But then the very next line I get an error trying to read from a nonexistent offset on the server (you can see that the offset for the partition differs from the one listed above, so I have no idea why it would be attempting to read form that offset, here is the error on the next line:

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets 
out of range with no configured reset policy for partitions: 
{demo.topic-11=4544296}

Any ideas to why my spark job is constantly going back to this offset (4544296), and not the one it outputs originally (5553330)?

It seems to be contradicting itself w a) the actual offset it says its on and the one it attempts to read and b) saying no configured reset policy

Посыпался или нет?
 ¶

От: AlexR 23 сентября 2012 г. 19:15

В общем, недавно переустановил систему на устаревшем компьютере (Windows 7 Professional x86), поставил все драйвера, установил парочку игр. Ну так вот, когда я поставил игру Crysis 2 и попытался поиграть, в момент загрузки 1 уровня игра зависла намертво. Повторная попытка загрузить игру не увенчалась успехом. Тогда я заглянул в журнал событий системы (на всякий случай) и увидел следующее:
Источник: NTFS Структура файловой системы на диске повреждена и непригодна к использованию. Запустите программу CHKDSK на томе DeviceHarddiskVolume4. К сведению, у меня диск размечен следующим образом: 100 МБ — зарезервированная область системы, 30 гб — раздел системы (C:), 32 ГБ — раздел для бекапов (D:), 403 ГБ — раздел для игр и информации (E:). Также есть второй жёсткий диск (76 ГБ), но он старый и вовсе без разделов (не размечен). В BIOS-е приоритетным при загрузке является новый жёсткий диск (который большого объёма около 460 МБ). Crysis 2 я ставил на диск E: в папку /Games/
В общем, таких ошибок ntfs появилось 20-25 штук. Я ушёл и выключил компьютер, через 2 часа снова включил, запустил снова Crysis 2 и на удивление она загрузилась нормально, но я снова заглянул в лог событий и увидел следующее:
Источник: Disk Неверный блок на устройстве DeviceHarddisk1DR1. И таких ошибок около 30.
Хотя, на удивление, игра загрузилась нормально (!).

Решил воспользоваться утилитой HDDScan, провёл SMART-тест, выдал всё зелёное, кроме:

197 Current Pending Errors Count  100 100 0000000000-0001 000

198 Uncorrectable Errors Count  100 100 0000000000-0001 000
Эти два параметра помечены жёлтой табличкой с восклицательным знаком.

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

Re: Посыпался или нет?
 ¶

От: AlexR 23 сентября 2012 г. 22:38

Проверил диск E: (именно он Harddiskvolume4), как предлагала система, с помощью chkdsk E: /F /R

Программа Chkdsk была запущена в режиме чтения и записи. 

Проверка файловой системы на E:
Тип файловой системы: NTFS.

Проверка файлов (этап 1 из 5)…
  Обработано файловых записей: 4352.                                          Проверка файлов завершена.
  Обработано больших файловых записей: 0.                              Обработано поврежденных файловых записей: 0.                        Обработано записей дополнительных атрибутов: 0.                      Обработано записей повторного анализа: 0.                          Проверка индексов (этап 2 из 5)…
  Обработано записей индекса: 5100.                                        Проверка индексов завершена.
  Проверено неиндексированных файлов: 0.                              Восстановлено неиндексированных файлов: 0.                        Проверка дескрипторов безопасности (этап 3 из 5)…
  Обработано файловых SD/SID: 4352.                                        Очистка от неиспользуемых индексных записей 1 в индексе $SII файла 0x9.
Очистка от неиспользуемых индексных записей 1 в индексе $SDH файла 0x9.
Очистка 1 неиспользованных дескрипторов безопасности.
Проверка дескрипторов безопасности завершена.
  Обработано файлов данных: 375.                                            CHKDSK проверяет журнал USN..
  Обработано байтов USN: 2470744.                                            Завершена проверка журнала USN
Проверка содержимого файла (этап 4 из 5)…
Ошибка чтения с кодом состояния 0xc000009c в смещении данных 0x30be11000 для 0x10000 Байт.
Ошибка чтения с кодом состояния 0xc000009c в смещении данных 0x30be1f000 для 0x1000 Байт.

Произведена замена поврежденных кластеров в файле 3440
под именем GamesCrysis 2GAMECR~1Textures.pak.
  Обработано файлов: 4336.                                              Проверка содержимого файла завершена.
CHKDSK проверяет свободное пространство на диске (этап 5 из 5)…
  Обработано незанятых кластеров: 101742874.                                Проверка свободного места на диске завершена.
Добавление 1 поврежденных кластеров в файл поврежденных кластеров.
Исправление ошибок в битовой карте тома.
Windows сделала изменения в файловой системе.

423372799 КБ всего на диске.
  16313968 КБ в 3954 файлах.
      1548 КБ в 376 индексах.
        4 КБ в поврежденных секторах.
    85783 КБ используется системой.
    65536 КБ занято под файл журнала.
406971496 КБ свободно на диске.

Размер кластера:                  4096 байт.
Всего кластеров на диске:    105843199.
101742874 кластеров на диске.

Re: Посыпался или нет?
 ¶

От: OLiMP 24 сентября 2012 г. 14:33

Диск начал сыпаться. Рекомендую переписать с него важную информацию и прекратить использование.

Re: Посыпался или нет?
 ¶

От: VecH 17 февраля 2016 г. 3:08

У меня примерно схожая ситуация, в системе два диска
Samsung SSD 840 PRO Series 256Gb
ST3000DM001-1CH166
Еще установлен картридер на 4 устройства

Иногда игра зависает, помогает только перезагрузка
во время перезапуска никаких проверок не запускается, сейчас обратил внимание что в событиях есть ошибка
[quote]Неверный блок на устройстве DeviceHarddisk1DR1.[/quote]
как определять что это за Harddisk1 и что за DR1 ?
Раньше вместо DR1 видел C, D, E и т.д., так хоть понятно на какой HDD грешить, а тут непонятная нумерация, на всякий случай SMART с подозрительного Seagate, неужели ему крышка?!
[code]ID Описание атрибута Порог Значение Наихудшее Данные Статус
05 Reallocated Sector Count 10 100 100 0 OK: Значение нормальное
09 Power-On Hours Count 0 96 96 19168 OK: Всегда пройдено
0C Power Cycle Count 0 99 99 221 OK: Всегда пройдено
B1 Wear Leveling Count 0 94 94 204 OK: Всегда пройдено
B3 Used Reserved Block Count (Total) 10 100 100 0 OK: Значение нормальное
B5 Program Fail Count (Total) 10 100 100 0 OK: Значение нормальное
B6 Erase Fail Count (Total) 10 100 100 0 OK: Значение нормальное
B7 Runtime Bad Block (Total) 10 100 100 0 OK: Значение нормальное
BB Uncorrectable Error Count 0 100 100 0 OK: Всегда пройдено
BE Airflow Temperature 0 66 54 34 OK: Всегда пройдено
C3 ECC Error Rate 0 200 200 0 OK: Всегда пройдено
C7 CRC Error Count 0 100 100 0 OK: Всегда пройдено
EB POR Recovery Count 0 99 99 107 OK: Всегда пройдено
F1 Total LBAs Written 0 99 99 9.31 ТБ OK: Всегда пройдено
[/code]

Re: Посыпался или нет?
 ¶

От: OLiMP 17 февраля 2016 г. 13:40

По смарту диск пока в норме. К какому из дисков относится запись «Неверный блок на устройстве DeviceHarddisk1DR1.» понять не возможно.

Re: Посыпался или нет?
 ¶

От: VecH 17 февраля 2016 г. 14:06

В системе два диска:
система SSD Samsung 840 Pro 256GB (Диск 0)
помойка HDD ST3000DM001-1CH166 (Диск 1)
Если я правильно понял то виноват Диск 1
Прогнал его викторией Verify + remap
[url=http://rghost.ru/6hXhfL92C.view]SMART до VERIFY + REMAP[code]————————————————————————-
  ID      Name                  Value  Worst  Tresh      Raw    Health
————————————————————————-
  1 Raw read error rate          117    99      6    154385408  •••••
  3 Spin-up time                  94    94      0            0  •••• 
  4 Number of spin-up times      100    100    20          262  •••••
  5 Reallocated sector count      100    100    10            0  •••••
  7 Seek error rate                53    51    30  5051110223009  ••   
  9 Power-on time                  71    71      0        25763  ••• 
10 Spin-up retries              100    100    97            0  •••••
12 Start/stop count              100    100    20          254  •••••
183 unknown attribut              100    100      0            0  •••••
184 End-to-End error              100    100    99            0  •••••
187 Reported UNC error            90    90      0          10  •••• 
188 Command timeout              100    100      0            0  •••••
189 High Fly writes                98    98      0            2  •••• 
190 Airflow temperature            63    37    45    37°C/98°F  •••• 
191 G-SENSOR shock counter        100    100      0            0  •••••
192 Power-off retract count      100    100      0          115  •••••
193 Load/unload cycle count        1      1      0      204820  •   
194 HDA Temperature                37    63      0    37°C/98°F  •••• 
194 Minimum temperature            90    63      0    6°C/42°F  —   
197 Current pending sectors      100    100      0            8  •••••
198 Offline scan UNC sectors      100    100      0            8  •••••
199 Ultra DMA CRC errors          200    200      0            0  •••••
240 Head flying hours            100    253      0  151251568318039  •••••
241 unknown attribut              100    253      0  54759127168  •••••
242 unknown attribut              100    253      0  75892637693  •••••
[/code]
SMART после VERIFY + REMAP[code]————————————————————————-
  ID      Name                  Value  Worst  Tresh      Raw    Health
————————————————————————-
  1 Raw read error rate          117    99      6    126713872  •••••
  3 Spin-up time                  94    94      0            0  •••• 
  4 Number of spin-up times      100    100    20          262  •••••
  5 Reallocated sector count      100    100    10            0  •••••
  7 Seek error rate                53    51    30  5051110226826  ••   
  9 Power-on time                  71    71      0        25767  ••• 
10 Spin-up retries              100    100    97            0  •••••
12 Start/stop count              100    100    20          254  •••••
183 unknown attribut              100    100      0            0  •••••
184 End-to-End error              100    100    99            0  •••••
187 Reported UNC error            90    90      0          10  •••• 
188 Command timeout              100    100      0            0  •••••
189 High Fly writes                98    98      0            2  •••• 
190 Airflow temperature            60    37    45  40°C/104°F  •••• 
191 G-SENSOR shock counter        100    100      0            0  •••••
192 Power-off retract count      100    100      0          115  •••••
193 Load/unload cycle count        1      1      0      204820  •   
194 HDA Temperature                40    63      0  40°C/104°F  •••• 
194 Minimum temperature            90    63      0    6°C/42°F  —   
197 Current pending sectors      100    100      0            8  •••••
198 Offline scan UNC sectors      100    100      0            8  •••••
199 Ultra DMA CRC errors          200    200      0            0  •••••
240 Head flying hours            100    253      0  36146444785244  •••••
241 unknown attribut              100    253      0  54759127208  •••••
242 unknown attribut              100    253      0  75894526549  •••••
[/code]

Всплывает эта ошибка [quote]Неверный блок на устройстве DeviceHarddisk1DR1.[/quote]
ночью поставил копирование данных на другой комп по сети, Total Commander завис на копировании 1 фотографии, мышка бегала, оживить не удалось, штатный shutdown не помогал, пришлось reset-ить, сейчас после тестов виктории (с LiveCD) продолжил копировать данные, кривой файл успешно считан и ошибок не наблюдается.

p.s. Знаю что диск имеет проблему в месте контактов под контроллером и сифонит пылью внутрь, полтора-два года назад залил там вокруг герметиком (почти сразу после покупки) т.к. гарантия все равно не светила из за удаленности магазина

Re: Посыпался или нет?
 ¶

От: OLiMP 17 февраля 2016 г. 18:12

Ещё раз повторяю, по смарту диск пока в норме. Ремапов нет. Если есть подозрение что с диском какие то проблемы то переписывайте с него данные и в помойку его или под файлопомойку которую не жалко потерять. У этих дисков нет проблем с контактами, у них есть ряд других проблем, самая распространённая это запил на поверхности, но пока эти проблемы Ваш диск не коснулись.

Re: Посыпался или нет?
 ¶

От: VecH 17 февраля 2016 г. 21:06

Сегодня пока бэкапил данные параметр[code]187 Reported UNC error            90    90      0          10  ••••  [/code]в RAW дорос до 225
Это всёЮ он смертный?

во время копирования прерывалось на чтении файлов, при нажатии кнопки повторить копирование продолжалось успешно
только 1 файл так и не удалось скопировать

Re: Посыпался или нет?
 ¶

От: OLiMP 17 февраля 2016 г. 21:56

187 параметр смарт у сигейта задействован для своих нужд, и к тому что показывают программы типа виктория никакого отношения не имеет. Важны значения 5, 197, 198 и 199 атрибутов. Они в норме.

Re: Посыпался или нет?
 ¶

От: Accuser 24 февраля 2016 г. 15:45

[b]OLiMP[/b], здавствуйте!
Подскажите пожалуйста насколько надёжен или не надёжен данный жёсткий диск.

Предположительно после внезапного отключения электроэнергии RAW значения параметров C5 и C6 стали по 16 каждый, затем стали по 32 каждый, а теперь снизились до 24. Пока ещё программами Victoria, MHDD и им подобных диск не прогонял. Но на диске точно имеются два несчитываемых файла. На диске хранится рабочая информация, поэтому хочется знать ваше мнение можно ли на этом диске хранить важные данные или же диск требует замены.
Заранее спасибо за ответ!

Re: Посыпался или нет?
 ¶

От: OLiMP 24 февраля 2016 г. 20:45

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

Re: Посыпался или нет?
 ¶

От: Accuser 25 февраля 2016 г. 7:18

[b]OLiMP[/b], спасибо за ответ! Постараюсь убедить начальство приобрести новый диск взамен данному.

Re: Посыпался или нет?
 ¶

От: OLiMP 25 февраля 2016 г. 12:55

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

Пересказ статьи Chad Callihan. What is a Read-Ahead Read?

Что такое опережающие чтения, и как они влияют на производительность SQL Server? Опережающие чтения позволяют SQL Server заглянуть вперед, чтобы извлечь страницы в буферный кэш прежде, чем они фактически будут затребованы для запроса. До 64 последовательных страниц могут быть прочитаны из файла, а возможность опережающего чтения может применяться как для страниц данных, так и для индексных страниц. Когда страницы оказываются в буферном кэше, то отпадает необходимость извлекать их с диска для будущих запросов, пока они не будут сброшены другими задачами SQL Server.

Опережающее чтение в действии

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

SET STATISTICS IO ON;
GO

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

DBCC DROPCLEANBUFFERS;

Например, мы хотим сделать запрос к базе данных StackOverFlow2013 для получения top 10000 пользователей c id, меньшими 10000. Выполнив запрос SELECT, увидим следующие результаты:

Я получил 5888 строк. Если мы перейдем на вкладку Messages и посмотрим на статистику, то увидим 289 опережающих чтений, означающее, что SQL Server извлек 289 страниц.

Что случится, если мы выполним тот же запрос еще раз? Увидим ли мы теперь опережающие чтения?

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

Запрет опережающих чтений

Если вы по каким-либо причинам не хотите, чтобы выполнялись опережающие чтения, то можете включить флаг трассировки 652, чтобы запретить их:

Как видно выше, что даже при предварительной очистке буферов (DBCC DROPCLEANBUFFERS), выполнение нашего оператора SELECT показало 0 в числе опережающих чтений, поскольку был включен флаг трассировки 652.

Вы разрешаете опережающие чтения?

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

Проблема с опережающим чтением в драйвере

Я написал низкоуровневый драйвер SCSI для чтения компакт-дисков в формате mp3, и я могу успешно смонтировать компакт-диск в iso9600 fs. Я понимаю, что блочный уровень сначала выдает команду SCSI READ с количеством блоков 2 или 1, а затем / позже он выполняет чтение вперед с большим количеством блоков. Но в моем случае я всегда получаю запрос на два блока только в команде READ (10) из блочного уровня. Кто-нибудь имеет представление о проблеме?

Я назначал неправильное значение в поле .max_sectors в структуре scsi_host_template. Из-за этого я не получал количество запросов на блокировку больше 2 от блочного уровня. Теперь при назначении правильного значения я получаю даже количество запросов на блок 30 от блочного уровня что значительно увеличивает скорость чтения.

Создан 03 июля ’14, 07:07

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

kernel
linux-device-driver

or задайте свой вопрос.

Системный вызов readahead () сохраняет документ внутри кеша страниц при работе в операционной системе Linux. Каждый раз, когда ядро ​​Linux считывает документы с диска, оно выполняет имитацию опережающего чтения. Когда возникает потребность в одной части документа, ядро ​​немедленно читает следующую часть документа. Например, если другой запрос на эту часть создается позже при последовательном чтении документа, ядро ​​автоматически вернет требуемую информацию. Такая оптимизация является относительно недорогой, поскольку на дисках есть кеши дорожек (очевидно, жесткие диски выполняют опережающее чтение изнутри), а документы обычно распределяются по системе последовательно. Более широкое окно упреждающего чтения может способствовать последовательному доступу к документу, тогда как опережение чтения может быть ненужными накладными расходами для спонтанно доступного документа. Ядро автоматически регулирует длину кадра опережающего чтения в ответ на процент успешных попыток в этом кадре, как указано в разделе «Внутренние части ядра». Если бы ударов было больше, было бы предпочтительнее рама побольше; более узкий экран был бы предпочтительнее, если бы попаданий было меньше. Вызов фреймворка madvise () позволяет программе немедленно управлять размером окна.

Содержание

  1. ВОЗВРАТ РЕЗУЛЬТАТ
  2. ОШИБКИ
  3. ОШИБКИ
  4. Предсказуемость опережения
  5. Преимущества системного вызова Readahead
  6. Меры предосторожности
  7. Заключение

ВОЗВРАТ РЕЗУЛЬТАТ

Каждый раз, когда системный вызов Readahead () завершается успешно, по завершении он возвращает 0. Если он не завершится сам, он вернет −1 при потере через errno, установленную для обозначения ошибки.

ОШИБКИ

  • EBADF:эта ошибка возникает, когда файловый дескриптор fd не может использоваться и, следовательно, не доступен только для чтения.
  • EINVAL:эта ошибка возникает, когда системный вызов readahead () может применяться к fd, потому что это не тип документа.

Чтобы использовать любой системный вызов, например системный вызов readahead, вы должны установить библиотеку manpages-dev, чтобы увидеть ее использование и синтаксис. Для этого напишите в оболочке следующую команду.

sudo apt install manpages-dev

Чтобы использовать любой системный вызов, например системный вызов readahead

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

kernel
linux-device-driver

or задайте свой вопрос.

Источник

Системный вызов readahead () сохраняет документ внутри кеша страниц при работе в операционной системе Linux. Каждый раз, когда ядро ​​Linux считывает документы с диска, оно выполняет имитацию опережающего чтения. Когда возникает потребность в одной части документа, ядро ​​немедленно читает следующую часть документа. Например, если другой запрос на эту часть создается позже при последовательном чтении документа, ядро ​​автоматически вернет требуемую информацию. Такая оптимизация является относительно недорогой, поскольку на дисках есть кеши дорожек (очевидно, жесткие диски выполняют опережающее чтение изнутри), а документы обычно распределяются по системе последовательно. Более широкое окно упреждающего чтения может способствовать последовательному доступу к документу, тогда как опережение чтения может быть ненужными накладными расходами для спонтанно доступного документа. Ядро автоматически регулирует длину кадра опережающего чтения в ответ на процент успешных попыток в этом кадре, как указано в разделе «Внутренние части ядра». Если бы ударов было больше, было бы предпочтительнее рама побольше; более узкий экран был бы предпочтительнее, если бы попаданий было меньше. Вызов фреймворка madvise () позволяет программе немедленно управлять размером окна.

Содержание

  1. ВОЗВРАТ РЕЗУЛЬТАТ
  2. ОШИБКИ
  3. ОШИБКИ
  4. Предсказуемость опережения
  5. Преимущества системного вызова Readahead
  6. Меры предосторожности
  7. Заключение

ВОЗВРАТ РЕЗУЛЬТАТ

Каждый раз, когда системный вызов Readahead () завершается успешно, по завершении он возвращает 0. Если он не завершится сам, он вернет −1 при потере через errno, установленную для обозначения ошибки.

ОШИБКИ

  • EBADF:эта ошибка возникает, когда файловый дескриптор fd не может использоваться и, следовательно, не доступен только для чтения.
  • EINVAL:эта ошибка возникает, когда системный вызов readahead () может применяться к fd, потому что это не тип документа.

Чтобы использовать любой системный вызов, например системный вызов readahead, вы должны установить библиотеку manpages-dev, чтобы увидеть ее использование и синтаксис. Для этого напишите в оболочке следующую команду.

sudo apt install manpages-dev

Чтобы использовать любой системный вызов, например системный вызов readahead

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

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead. Нажмите q для выхода с этой страницы.

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead

Вы должны сначала включить библиотеку «fcntl.h» при использовании кода языка C. Параметр fd — это дескриптор документа, который указывает, какой документ должен быть прочитан из вашей системы Linux. Параметр смещения определяет контрольную точку для чтения информации, а счетчик определяет общее количество байтов, которые нужно прочитать. Поскольку ввод-вывод выполняется на страницах, смещение по существу корректируется с понижением до границы страницы, и байты становятся считанными до другого края страницы примерно равными или более чем (смещение + счетчик). Системный вызов readahead () не читает документ до конца. Смещение документа доступного определения файла, на которое ссылается файловый дескриптор fd, сохраняется.

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

Если кто-Если кто-то хочет дополнительно использовать опережающее чтение на языке Cто хочет дополнительно использовать опережающее чтение на языке C

ОШИБКИ

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

Предсказуемость опережения

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

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

Преимущества системного вызова Readahead

При большом количестве оперативной памяти системный вызов readahead имеет следующие преимущества:

  • Уменьшено время инициализации устройства и программы.
  • Производительность была улучшена. Это может быть достигнуто с помощью устройств хранения, таких как жесткие диски, где переключение головок диска между произвольными секторами занимает много времени. Забегая вперед предоставляет системе планирования ввода-вывода гораздо больше требований ввода-вывода гораздо более эффективным способом, объединяя более высокую долю смежных дисковых блоков и уменьшая перемещения головки диска.
  • Ввод / вывод и энергия процессора в целом используются наиболее эффективно. Когда процессор активен, выполняется дополнительный ввод-вывод документа.
  • Когда компьютеру больше не нужно спать в ожидании ввода-вывода, когда запрашиваемая информация действительно была извлечена, переключение контекста, которое потребляет ценные циклы ЦП, уменьшается.

Меры предосторожности

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

Заключение

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

Источник

Я пытаюсь написать код в Apache Pig для добавления матрицы.

matrixM = LOAD 'Mmatrix.txt' USING PigStorage (',') AS (i,j,v);
matrixN = LOAD 'Nmatrix.txt' USING PigStorage (',') AS (i,j,v);
unionres = UNION matrixM, matrixN;
DUMP unionres;
res = GROUP unionres BY (i,j);
DUMP res;
ILLUSTRATE res;
final_res = FOREACH res GENERATE group.$0 AS i, group.$1 AS j, SUM(unionres.v) AS v;
DUMP final_res;

Я получаю следующее исключение при запуске кода в локальном режиме.

org.apache.hadoop.io.ReadaheadPool - Failed readahead on ifile
EBADF: Bad file descriptor
    at org.apache.hadoop.io.nativeio.NativeIO$POSIX.posix_fadvise(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$POSIX.posixFadviseIfPossible(NativeIO.java:267)
    at org.apache.hadoop.io.nativeio.NativeIO$POSIX$CacheManipulator.posixFadviseIfPossible(NativeIO.java:146)
    at org.apache.hadoop.io.ReadaheadPool$ReadaheadRequestImpl.run(ReadaheadPool.java:208)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Может ли кто-нибудь объяснить мне, где я ошибаюсь?

1 ответ

Обычно вышеприведенное сообщение является ПРЕДУПРЕЖДЕНИЕМ, а фактическое сообщение об ошибке отображается позже. Я видел этот тип сообщения WARN только тогда, когда диск неисправен или заполнен. Есть ли шансы, что ваш локальный /tmp заполнен?


0

Koji
19 Дек 2017 в 07:41

Источник

Пересказ статьи Chad Callihan. What is a Read-Ahead Read?

Что такое опережающие чтения, и как они влияют на производительность SQL Server? Опережающие чтения позволяют SQL Server заглянуть вперед, чтобы извлечь страницы в буферный кэш прежде, чем они фактически будут затребованы для запроса. До 64 последовательных страниц могут быть прочитаны из файла, а возможность опережающего чтения может применяться как для страниц данных, так и для индексных страниц. Когда страницы оказываются в буферном кэше, то отпадает необходимость извлекать их с диска для будущих запросов, пока они не будут сброшены другими задачами SQL Server.

Опережающее чтение в действии

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

SET STATISTICS IO ON;
GO

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

DBCC DROPCLEANBUFFERS;

Например, мы хотим сделать запрос к базе данных StackOverFlow2013 для получения top 10000 пользователей c id, меньшими 10000. Выполнив запрос SELECT, увидим следующие результаты:

Я получил 5888 строк. Если мы перейдем на вкладку Messages и посмотрим на статистику, то увидим 289 опережающих чтений, означающее, что SQL Server извлек 289 страниц.

Что случится, если мы выполним тот же запрос еще раз? Увидим ли мы теперь опережающие чтения?

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

Запрет опережающих чтений

Если вы по каким-либо причинам не хотите, чтобы выполнялись опережающие чтения, то можете включить флаг трассировки 652, чтобы запретить их:

Как видно выше, что даже при предварительной очистке буферов (DBCC DROPCLEANBUFFERS), выполнение нашего оператора SELECT показало 0 в числе опережающих чтений, поскольку был включен флаг трассировки 652.

Вы разрешаете опережающие чтения?

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

Источник

Студворк — интернет-сервис помощи студентам

Имеется раздел 111Гб, который решил разделить Acronis DD10 на пополам, предварительно освободив свободное место до 74,9Гб , т.е. инфы на 37гб, имя раздела F:
1. предложено было переместить данные на создаваемый раздел — я отказался, т.к. один аккаунт привязан к оригинальному,
2. предложено было уничтожить данные — отказался
3. Предполагаемая буква нового раздела после деления — I

в итоге выполнения операции вышло уведомление:

«Невозможно изменить размер раздела с испорченными блоками»(log)

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<log build=»2064″ product=»Acronis*Disk Director Suite» uuid=»92FB3769-32DB-4FBA-9ACD-837E03DC4FF1″ version=»10.0″>
<event code=»1″ id=»1″ message=»Начало выполнения отложенных операций.» module=»100″ time=»1331489077″ type=»2″ />
<event code=»504″ id=»2″ message=»Запланированная операция 74 начата: &quot;Splitting partition&quot;» module=»1″ time=»1331489077″ type=»2″ />
<event code=»502″ id=»3″ message=»Операция с: раздел &quot;1-12&quot; была прервана с кодом Unable to resize partition with bad blocks (0x70023) &quot;Невозможно изменить размер раздела с испорченными блоками&quot;» module=»1″ time=»1331489077″ type=»4″ />
<event code=»4″ id=»4″ message=»Операция завершена с ошибками.» module=»100″ time=»1331489109″ type=»4″ />
</log>

о такой «засаде» Acronis (при бэдах) я не предполагал…
в итоге имею «полуполноценный» раздел NTFS:
— Управление Дисками видит полный объём как

111ГБ так и 47,05Гб одновременно, так же видит и Acronis
— проводник только 47,05Гб,
в чём и несуразность ситуации, т.к., к то му же раздел не RAW

Хотелось бы

грамотно вернуть раздел в первоначальное состояние,

имея в виду Бэды(только на F)…

Тип события: Уведомление
Источник события: Chkdsk
Категория события: Отсутствует
Код события: 26180
Дата: 13.02.2012
Время: 7:32:47
Пользователь: Н/Д
Компьютер: ANATOLY
Описание:
Проверка файловой системы на F:
Метка тома: Архивный.
Исправление небольших несоответствий на диске.
Очистка от неиспользуемых индексных записей 1 в индексе $SII файла 0x9.
Очистка от неиспользуемых индексных записей 1 в индексе $SDH файла 0x9.
Очистка 1 неиспользованных дескрипторов безопасности.
CHKDSK проверяет журнал USN..
Завершена проверка журнала USN
Проверка содержимого файла (этап 4 из 5)…
Ошибка чтения с кодом состояния 0xc0000185 в смещении данных 0x1b7a592000 для 0x10000 Байт.
Ошибка чтения с кодом состояния 0xc0000185 в смещении данных 0x1b7a599000 для 0x1000 Байт.
Произведена замена поврежденных кластеров в файле 51752
под именем CD1F~1C__~2C__(14~1.MP4.
Проверка содержимого файла завершена.
CHKDSK проверяет наличие места на диске (этап 5 из 5)…
Проверка свободного места на диске завершена.
Добавление 1 поврежденных кластеров в файл поврежденных кластеров.
Исправление ошибок в рисунке тома.
Windows сделала изменения в файловой системе.

117207020 КБ всего на диске.
96646804 КБ в 48295 файлах.
16684 КБ в 2806 индексах.
24 КБ в поврежденных секторах.
175104 КБ используется системой.
65536 КБ занято под файл журнала.
20368404 КБ свободно на диске.

Размер кластера: 4096 байт.
Всего кластеров на диске: 29301755.
5092101 кластеров на диске.

Данные:
0000: 00 97 01 00 a9 c7 00 00 .—..©Ç..
0008: 33 1c 01 00 00 00 00 00 3…….
0010: 61 03 00 00 00 00 00 00 a…….
0018: 22 00 00 00 00 00 00 00 «…….
0020: d6 e4 4c 02 00 00 00 00 ÖäL…..
0028: b6 cb 6f 13 00 00 00 00 ¶Ëo…..
0030: 02 64 89 01 00 00 00 00 .d‰…..
0038: 8a 7c 01 f7 05 00 00 00 Š|.÷….
0040: 7a ee 00 45 01 00 00 00 zî.E….
0048: e6 96 a4 54 07 00 00 00 æ–¤T….
0050: 99 9e 36 00 00 00 00 00 ™ž6…..

Источник

Понравилась статья? Поделить с друзьями:
  • Ошибка определения контура в автокаде
  • Ошибка операция решения но не правило решения
  • Ошибка определения идентификатора устройства ростелеком на телефоне самсунг
  • Ошибка определения кодировки файла config
  • Ошибка операция отклонена системой безопасности