Wiki Довідка
Продуктивність
Скільки процесора бере програма, що показує група Хост і що робити, коли комп’ютер не встигає за потоком відліків. Головне правило: програма не деградує мовчки. Якщо спектр пораховано не з усього ефіру, вона називає частку числом; якщо відліки загубилися, показує, на якому рівні.
Виміряне навантаження
Числа нижче виміряні на живому вікні з HackRF One: процесор i7-13650HX, екран 144 Гц, N 4096. Це частка одного ядра, сумарно по всіх потоках програми — інтерфейс із рендером, обробка сигналу і потік відеодрайвера.
| Режим | Навантаження, % одного ядра |
|---|---|
| 2 МС/с | близько 28 |
| 10 МС/с | близько 67 |
| 20 МС/с | близько 76 |
| свіп 1–6000 МГц | близько 62 |
На іншому процесорі числа будуть інші, але співвідношення те саме: навантаження росте з темпом вибірки, бо FFT рахується з усіх відліків. Власні числа вашого комп’ютера показує група Хост.
Група «Хост»
Група Хост стоїть на вкладці Пристрій, під групами джерела й запису. У ній два перемикачі й показники:
- fps панелі
- Темп анімації самої бічної панелі — плавність інтерфейсу. Зелене від 59, жовте від 45, нижче — червоне. Лічильник працює лише тоді, коли групу видно на екрані.
- мс/кадр
- Той самий темп у мілісекундах на кадр.
- кадрів спектра/с
- Скільки кадрів спектра й водоспаду справді домальовано за секунду. Це інше число, ніж fps панелі, і плутати їх не варто.
- Кадрів спектра
- Стеля темпу перемальовування: 60, 30 або 15 — див. нижче.
- Спектр із блоків
- З яких блоків відліків рахувати спектр — див. нижче.
- Покриття спектра
- Частка часу ефіру, з якої спектр справді пораховано, у відсотках, і поточний крок пропуску. Зелене при 100 %, інакше жовте.
- рядків/с і спектрів/с
- Скільки рядків водоспаду видано за секунду і скільки спектрів пораховано.
- DSP, ядра
- Скільки часу одного ядра бере потік обробки сигналу, у відсотках. Зелене до 60 %, далі жовте.
- Історія
live, коли водоспад показує живий ефір, або від’ємне число рядків, на які він прокручений назад.
Два дрібні рядки внизу групи — версія OpenGL із назвою відеокарти та бібліотека, якою рахується FFT.
Кадрів спектра: 60, 30 або 15
Перемикач Кадрів спектра задає, скільки разів на секунду спектр і водоспад перемальовуються через нові дані. Типово 60. Нижча стеля нічого не губить: рядки водоспаду лягають у той самий кадр пачкою, а дії мишею малюються одразу за будь-якої стелі.
30 або 15 — для слабкої машини: менше роботи процесора й відеодрайвера на картинку. Виміряно при 20 МС/с і стелі 30: потік інтерфейсу 19 → 15 % ядра, потік драйвера 9 → 5 %. Вибір пам’ятається між запусками.
Спектр із блоків і покриття
Спектр — найдорожча частина обробки: FFT усіх відліків, згортки, траси. Запис і звук дешеві. Тому, коли машина не встигає, програма може рахувати спектр не з кожного блоку відліків, а запис, звук і обвідна zero span і далі отримують усі блоки. Це краще, ніж переповнене кільце приладу, яке губить відліки одразу для всіх.
- авто
- Типово. Спектр рахується з усіх блоків, поки обробка вміщується в час ефіру. Коли вона два перегляди поспіль займає понад 80 % цього часу — або одразу, якщо кільце приладу вже заповнене на чверть, — програма пропускає стільки, скільки треба. Крок пропуску не перевищує 16, тобто спектр рахується щонайменше з 1/16 часу ефіру; нижче покриття опускає лише запобіжник переповнення кільця (див. нижче). Коли машина знову встигає, пропуск зменшується сам.
- усіх
- Завжди всі блоки. Якщо машина не встигла — кільце приладу губить відліки, і це видно в лічильнику Дропи.
- кожного 2-го, кожного 4-го, кожного 8-го
- Примусовий пропуск. «Кожного n-го» означає 1/n часу ефіру, а не кількості блоків.
Ціна названа чесно: подія, коротша за пропуск, може не потрапити на екран. Частка часу, з якої спектр справді пораховано, стоїть у панелі довіри в полі Покриття щоразу, коли вона менша за 100 %, і завжди — у полі Покриття спектра групи Хост. Там же з’являються пояснення:
- 1/… часу — поточний крок пропуску;
- пропуск неможливий: кадр довший за пів блоку — N такий великий, що кадр FFT збирається з кількох блоків, і пропущений блок рвав би кожен кадр;
- кільце приладу переповнюється — наздоганяю — у режимі авто кільце заповнене більш як наполовину, і блоки пропускаються незалежно від кроку, щоб не загубити відліки.
Що при цьому відбувається з рештою картинки:
- Водоспад тримає заданий темп у настінному часі: рядків на секунду не меншає, у кожному просто менше спектрів.
- Зважені детектори qp, cav і crms на час пропуску завмирають: їхні сталі часу йдуть по обробленому часу.
- У свіпі пропуску немає.
Як це працює, перевірено на HackRF One зі штучно сповільненим FFT, коли обробка блоку займала близько двох його тривалостей. У режимі усіх — 150 млн загублених відліків за приблизно 18 с і 2 кадри на секунду. У режимі авто — жодного дропа кільця, покриття 25 %, водоспад заданим темпом. На машині, що встигає, авто нічого не пропускає.
Диск для запису
Запис пише власний формат відліків приладу без стиснення — два байти на відлік. Для HackRF One на 20 МС/с це 40 МБ/с: десять хвилин займають 24.26 ГБ, і на диску, що встигає, втрат нуль (виміряно). Для RTL-SDR 0.9.25 на 2.56 МС/с це близько 5 МБ/с. Потрібну швидкість для поточного темпу показує підказка поля Формат у групі Запис.
Важить стала швидкість, а не пікова. На машині автора накопичувач NVMe без власної пам’яті DRAM тримав 1443 МБ/с, доки не вичерпався його швидкий кеш, а далі падав до 8.6–20 МБ/с з окремими записами по 23 с — і десятихвилинний запис на 20 МС/с втратив там 1.17 мільярда відліків. Диск C: ті самі 24 ГБ записав без жодного дропа, з найдовшим записом 3.05 мс. Тому тека записів — C:\sdrsa-rec, і змінити її в цій версії не можна.
Під час запису стежте за полем Черга писаря: черга, що росте, означає, що диск не встигає. Те, що вже загублено через диск, рахує Диск не встиг. Докладніше — на сторінках Запис IQ і Панель довіри й лічильники втрат.
Згорнуте чи затулене вікно 0.9.30
Windows сама вирішує, наскільки процес важливий, і програмі, чиє вікно згорнуте, може дати менше: перенести її потоки на енергоощадні ядра й не виконувати її запитів на дрібний такт таймера. Для приладу, що в цю мить приймає, це означало б втрати відліків.
Тому, поки джерело працює й не стоїть на паузі, програма забороняє Windows її сповільнювати, і згорнуте чи затулене вікно програму не гальмує. На паузі й після зупинки рішення повертається системі. Ціна: згорнута програма, що приймає, споживає стільки ж, скільки видима, — на батареї це помітно. «Режим ефективності», який для програми ввімкнули в Диспетчері завдань, програма не перемагає: він лишається, як був.
Відеокарта й OpenGL
Спектр і водоспад малює відеокарта через OpenGL 3.3, і це обов’язкова вимога. Якщо відеодрайвер його не дає, програма показує вікно OpenGL недоступний із причиною: решта програми працює, але картинки не буде. Найчастіше допомагає оновити драйвер відеокарти; у віртуальній машині — увімкнути 3D-прискорення. Яку версію OpenGL і яку відеокарту програма отримала, видно в дрібному рядку внизу групи Хост.
Поради для слабкої машини
- Знизьте темп приладу. Це найдієвіше: у вимірі вище 2 МС/с коштують майже втричі менше за 20 МС/с. Беріть стільки смуги, скільки потрібно для задачі.
- Поставте Кадрів спектра на 30 або 15. Вимір від цього не страждає.
- Лишіть Спектр із блоків у режимі авто і дивіться на Покриття в панелі довіри. Якщо воно постійно далеко від 100 %, машина не тягне цей темп.
- Не тримайте відкритою вкладку Пристрій без потреби. Поки групу Хост видно, її лічильник кадрів змушує бічну панель перемальовуватись на кожен кадр екрана.
- Обережно з детектором qp. Квазіпік — найважчий із детекторів: близько пів ядра на 20 МС/с.
- FPV-відео — окреме навантаження. Декодер працює у власному потоці й, коли не встигає, скидає блоки та каже скільки; для кольору практичний вибір — 16 МС/с. Див. FPV-відео.
- Якщо росте Не доїхало, справа не в процесорі, а в USB: спробуйте нижчий темп або інший порт без сусідів на тому самому контролері.
Обмеження
- Числа навантаження виміряні на одній машині з одним приладом; це орієнтир, а не гарантія.
- FFT рахується на процесорі; відеокарта лише малює спектр і водоспад.
- Пропуск блоків рятує запис і звук, але не картинку: за малого покриття короткі події на екран не потрапляють.
- Без OpenGL 3.3 спектра й водоспаду немає зовсім.
- Теку записів змінити не можна: для 20 МС/с диск C: має стало тримати 40 МБ/с і мати десятки гігабайтів вільного місця.