LINUX.ORG.RU

Сообщения wolverin

 

В ffmpeg тот самый SRTP для WebRTC?

Форум — Development

Приветствую.

Есть хитрожопая надежда не писать велосипед в части реализации SRTP для сервера WebRTC, который бы полноценно работал БЕЗ промежуточного прокси сервера.

https://ffmpeg.org/ffmpeg-protocols.html#srtp Может кто знает прокатит это?

Или без вариантов нужно RTP пакеты пропускать через libsrtp?

 , ,

wolverin
()

Как использовать vdpau в ffmpeg?

Форум — Multimedia

Приветствую.

Есть usb камера

# v4l2-ctl --all -d 0
Driver Info (not using libv4l2):
    Driver name   : uvcvideo
    Card type     : CS-USB-IMX307: UVC Camera
    Bus info      : usb-1c1d000.usb-1
    Driver version: 4.14.111
    Capabilities  : 0x84200001
        Video Capture
        Streaming
        Extended Pix Format
        Device Capabilities
    Device Caps   : 0x04200001
        Video Capture
        Streaming
        Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
    Width/Height      : 1920/1080
    Pixel Format      : 'H264'
    Field             : None
    Bytes per Line    : 3840
    Size Image        : 4147200
    Colorspace        : sRGB
    Transfer Function : Default
    YCbCr Encoding    : Default
    Quantization      : Default
    Flags             :
Crop Capability Video Capture:
    Bounds      : Left 0, Top 0, Width 1920, Height 1080
    Default     : Left 0, Top 0, Width 1920, Height 1080
    Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080
Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080
Streaming Parameters Video Capture:
    Capabilities     : timeperframe
    Frames per second: 30.000 (30/1)
    Read buffers     : 0
                     brightness (int)    : min=0 max=100 step=1 default=50 value=50
                       contrast (int)    : min=0 max=100 step=1 default=50 value=50
                     saturation (int)    : min=0 max=100 step=1 default=50 value=50
                            hue (int)    : min=0 max=100 step=1 default=50 value=50
error 5 getting ctrl White Balance Temperature, Auto

с такими потоками

# v4l2-ctl --list-formats-ext -d 0
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2
        Size: Discrete 640x360
         Interval: Discrete 0.033s (30.000 fps)

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : Motion-JPEG
        Size: Discrete 640x360
         Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 1280x720
         Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 1920x1080
         Interval: Discrete 0.033s (30.000 fps)

    Index       : 2
    Type        : Video Capture
    Pixel Format: 'H264' (compressed)
    Name        : H.264
        Size: Discrete 640x360
         Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 1280x720
         Interval: Discrete 0.033s (30.000 fps)
        Size: Discrete 1920x1080
         Interval: Discrete 0.033s (30.000 fps)

есть ффмпег с поддержкой декодера на вдпау

# ./ffmpeg-ubrv -codecs | grep vdpau | grep 264
ffmpeg version git-2015-01-22-f86a076 Copyright (c) 2000-2014 the FFmpeg developers
  built on Jul 18 2024 12:09:53 with gcc 5.4.0 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.12) 20160609
  configuration: --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libv4l2 --disable-doc
  libavutil      54.  6.100 / 54.  6.100
  libavcodec     56.  0.101 / 56.  0.101
  libavformat    56.  2.100 / 56.  2.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.102 /  5.  0.102
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vdpau ) (encoders: libx264 libx264rgb cedrus264 )

пытаюсь проверить декодер как

# VDPAU_DRIVER=sunxi ./ffmpeg-ubrv -f v4l2 -input_format h264 -video_size 1920x1080 -pix_fmt yuyv422 -c:v h264_vdpau -i /dev/video0 -f null /dev/null

при поступлении опорного кадра падает с ошибкой

[video4linux2,v4l2 @ 0xf4c480] decoding for stream 0 failed
[video4linux2,v4l2 @ 0xf4c480] Could not find codec parameters for stream 0 (Video: h264 (Baseline), 1920x1080, -5 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
/dev/video0: could not find codec parameters
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: h264 (Baseline), 1920x1080, -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 2000k tbc
[buffer @ 0x1157c00] Unable to parse option value "-1" as pixel format
    Last message repeated 1 times
[buffer @ 0x1157c00] Error setting option pix_fmt to value -1.
[graph 0 input from stream 0:0 @ 0xf45620] Error applying options to the filter.
Error opening filters!

к слову использую

# ls -l /usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_sunxi.so*
lrwxrwxrwx 1 root root 19 Jul 19 09:47 /usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_sunxi.so -> libvdpau_sunxi.so.1
lrwxrwxrwx 1 root root 28 Jul 19 08:40 /usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_sunxi.so.1 -> /home/pi/libvdpau_sunxi.so.1

но запрос не показывает какой либой пользуется

# vdpauinfo
vdpauinfo: cannot connect to X server

 ,

wolverin
()

Очистить буферы libav/ffmpeg?

Форум — Development

Приветствую.

Вдрух кто знает - выполняю пересжатие из мжпег или х264 снова в х264, затем через локальный интерфейс отправляю в свой же rtsp сервер - никак не удается понять, почему при остановке стрима и его запуске вижу 1-2 секунды предыдущего стрима.

Все делаю через api ффмпега.

Думал кодер нужно сбрасывать через avcodec_flush_buffers в ответ ошибка Ignoring attempt to flush encoder that doesn't support it, может быть в декодере х264 накопилось - так нет, для мжпег те же 1-2 секунды предыдущих мусорных кадров, попытался сбросить входящий буфер ртсп сервера через avformat_flush(f) толку нет, варианты av_write_frame(f, NULL) avcodec_send_frame(c, NULL) и тп тоже ничего не сбрасывают.

Да важно - на кодер в начале стрима всегда поступает не сжатый кадр с признаками что он ключевой и типом I, поэтому стрим начинается всегда мгновенно, НО откуда то 1-2 секунды от предыдущего ((

 ,

wolverin
()

Кодек для ffmpeg или писать самому?

Форум — Development

Приветствую.

В продолжении темы

Сцуть - в древней версии ffmpeg есть отреверсированный кодек cedrus для аппаратного УСКОРЕНИЯ кодирования в H264 на SoC.

На этапе старта нуждаюсь в совете - что будет проще и быстрее - поднять старый кодек до версии libav ффмпега хотя бы 5 ветки (его использую) или полностью реализовывать весь функционал кодека в своем коде???

Из опыта имею только поднятие ffserver до 5 ветки и реализация на его базе простого RTSP сервера )

 , ,

wolverin
()

fwrite + много pread

Форум — Development

Приветствую.

В продолжении темы

Напомню - пишу по кольцу с камеры на флешку без файловой системы через буфер fwrite кусками по 256КБ, из за нехватки времени заняться вопросом скачивание архива выполнялось в полурукопашном режиме через открытие отдельного FILE* или дескриптора в отдельном потоке и долгая перекачка по ентернетам.

Пришло время заняться вопросом отдать архив нескольким клиентам одновременно и собсна вопрос - можно ли через уже открытый FILE* и int fd = fileno(FILE*), используя pread со своим смещением в каждом потоке безопасно выполнять выгрузку одного и того же «файла»? или лучше для каждой выгрузки-потока выполнять свой open?

ЗЫ. на старте не знаю сколько будет одновременно читающих потоков.

 ,

wolverin
()

Все таки fread или mmap?

Форум — Development

Приветствую.

В продолжении темы

Имеется армка 512МБ рам и 512ГБ сд карта.

Суть - для построения журнала видео архива на носителе без файловой системы при прямом проходе (при обратном смещение 1 минута и перечитывается флешка за секунды) флешки выполняю смещение на размер кадра, для поиска нужным мне меток. Все в целом устраивало при перечитывании временных меток пока писал JPEG, который был размером где то 220КБ, но как только начал писать H264 перечитать флешку «вперед» стало проблемой иба кадры в основном около 15КБ.

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

Собсна глобальный вопрос - как бы ускорить чтение с носителя???

Второстепенный - fread vs fseeko какими буферами оперируют если читается фридом условно 20 байт и как его менять? setvbuf почему то чем то вроде setvbuf(pf, NULL, _IOFBF, 32 * 1024 * 1024) никак не влияет на скорость перечитывания носителя

Или может я просто уперся в физическую скорость флешки!?

 , fread, ,

wolverin
()

avcodec_send_frame потокобезопасен?

Форум — Development

жизнь боль )

в продолжении темы Как разблокировать одновременно 2 потока?

3 потока - декодер, енкодер и снимков, декодер ждет переключения между 2 декодированными буферами по барьеру и после переключения отпускает семафоры нужных потоков енкодеров, когда их 2 все работает, только становится на 1 больше и avcodec_send_frame потока снимков начинает переодически слать ошибку -22, даже засегфолился уже ((

для примера обработчик потока снимков

int SnapshotEncode(int (*callback)(const char * topic, const uint8_t * buf, int lbuf), const char * topic)
{
    const AVCodec * pCdc = avcodec_find_encoder(AV_CODEC_ID_MJPEG);
    if (!pCdc)
    {
        fprintf(stderr, "ERROR find snapshot encoder for '%s'\n", avcodec_get_name(AV_CODEC_ID_MJPEG));
        return -1;
    }

    struct stEncoder_t * enc = EncoderNew("snapshot");
    if (!enc) return -2;

    int rt = 0;
    AVCodecContext * pCdcCtx = avcodec_alloc_context3(pCdc);
    if (!pCdcCtx)
    {
        PrintErrorAV("alloc snapshot an encoding context", (rt = AVERROR(ENOMEM)));
        return rt;
    }

    pCdcCtx->time_base = DEFAULT_TIME_BASE;
    pCdcCtx->pix_fmt = pCdcCtxInp->pix_fmt;
    pCdcCtx->height = pCdcCtxInp->height;
    pCdcCtx->width = pCdcCtxInp->width;

    if ((rt = avcodec_open2(pCdcCtx, pCdc, NULL)))
    {
        PrintErrorAV("open snapshot encoder", rt);
        goto END;
    }

    AVPacket * pPkt = av_packet_alloc();
    if (!pPkt)
    {
        PrintErrorAV("allocate snapshot AVPacket", (rt = AVERROR(ENOMEM)));
        goto END;
    }

    EncoderRun(enc, 1);
    if ((rt = sem_wait(&enc->sem)) < 0)
        fprintf(stderr, "ERROR lock encoder semaphore: %d %s\n", errno, strerror(errno));

    if (rt)
    {
        EncoderRun(enc, 0);
        pthread_barrier_wait(&stDec.bar);
        goto END;
    }

    if ((rt = avcodec_send_frame(pCdcCtx, stEnc.pFrm)))
        PrintErrorAV("snapshot encode send", rt);
    else if ((rt = avcodec_receive_packet(pCdcCtx, pPkt)))
        PrintErrorAV("snapshot encode receive", rt);

    EncoderRun(enc, 0);
    pthread_barrier_wait(&stDec.bar);

    if (rt == 0) callback(topic, pPkt->data, pPkt->size);

    av_packet_unref(pPkt);

END:
    EncoderFree(enc);
    if (pPkt) av_packet_free(&pPkt);
    if (pCdcCtx) avcodec_free_context(&pCdcCtx);

    return rt;
}

 , ,

wolverin
()

Как разблокировать одновременно 2 потока?

Форум — Development

Приветствую.

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

Вопрос - как бэ из потока декодера запускать сразу 2 потока енкодеров, при этом поток декодера должен ждать завершения обоих???

В идеале бы конешно на С, т.к. сишный модуль этим занимается.

Спасибо за любые идеи )

 ,

wolverin
()

Хитрая очередь 2

Форум — Development

Приветствую, отдельно потужно постоянных читателей моих тем ))

Требуется реализовать очередную хитро.опую очередь для многопоточной обработки, поступающих с h264 камеры nalu блоков, которые в контексте libav библиотек от ffmpeg будем считать условными кадрами.

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

Теперича хочется тоже самое но в контексте 264 кодека - т.е. для случая чтения например я бы мог заполнять очередь до поступления И кадра и сразу ее опустошать при его считывании (тем самым гарантируя что в начале очереди всегда ключевой кадр), но вот никак не соображу - а как же «потребители» будут понимать что очередь сброшена и надо начинать читать ее сначала? uint64_t счётчик сброса у всех потоков вести!?

Может многопоточники на плюсах сорентируют какие стандартные алгоритмы для таких вещей используются!?

 

wolverin
()

Где потеря RTP пакетов?

Форум — Admin

Приветствую.

Для проксирования видео с камер используется оборачивание в vpn (хотя это мне кажется не важно, т.к. проблема даже если просто запушить) и затем проксирование через mediamtx (он же rtsp-simple-server).

Канал условно гигабитный на этом видео шлюзе, если посмотреть видео напрямую с камеры проблем нет, как только прогнать через проксю - картинка либо тормозить (для мжпег), либо сыпется (для х264), но справедливости ради не всегда и не везде (особенно ночью улучшение существенное по качеству происходит).

Писал разработчику - отвечает ищи сам, у него все в шоколаде ((

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

 ,

wolverin
()

Как посмотреть содержимое HTTP Accept-Encoding: gzip

Форум — Admin

Приветствую.

Пытаюсь разобраться, что происходит между чужими ПО сервера и клиента (не работает сервис после обновления). Сдампил rest обмен, ответ выглядит как

HTTP/1.1 200 OK
Date: Thu, 18 Apr 2024 09:52:54 GMT
Server: Apache/2.4.38 (Debian)
Set-Cookie: PHPSESSID=f0ifisf0j0nc8n662i85uevdv4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5980
Connection: close
Content-Type: text/html; charset=UTF-8

...собсна тело...

есть способ увидеть его???

 ,

wolverin
()

RTSP публикация

Форум — Development

Приветствую all! ))

Итакс продолжаю изучать вопрос RTSP публикация надежна?

Вновь уточню, что требуется послать rtp только при запросе с rtsp сервера.

Поскольку в свое поделие rtsp сервера так же выполняю публикацию подготовленного видео потока (Как забирается RTP поток у сервера RTSP?), чтобы организовать отдельный поток сервиса с очередью через локальный интерфейс с его внешними буферами (все штатными либами ффмпега без заморочек про сдп, временные базы, синхронизации потоков и прочее), то запушил так же штатно на внешний халявный rtsp-simple-server, который выполняет роль видео прокси в чужом проекте (с мыслями его перепроектировать).

И значит в tcpdump такой обмен вижу после установления tcp подключения

- моя утилита
OPTIONS rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
CSeq: 1
User-Agent: Lavf59.25.100

- сервер
RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN
Server: gortsplib

затем

- утилита
ANNOUNCE rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Lavf59.25.100
Content-Length: 305

- сервер ответ 0 длины, видимо tcp-ое подтверждение доставки, которое вижу после каждой посылки

затем

- утилита
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 адрес_сервера
t=0 0
a=tool:libavformat LIBAVFORMAT_VERSION
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAKNoB4AiflmoCAgKAAAADAIAAAApHjBlQ,aM4NyA==; profile-level-id=42C028
a=control:streamid=0

- сервер
RTSP/1.0 200 OK
CSeq: 2
Server: gortsplib
Session: 545498661

затем

- утилита
SETUP rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла/streamid=0 RTSP/1.0
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record
CSeq: 3
User-Agent: Lavf59.25.100
Session: 545498661

- сервер
RTSP/1.0 200 OK
CSeq: 3
Server: gortsplib
Session: 545498661
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

затем

- утилита
RECORD rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
Range: npt=0.000-
CSeq: 4
User-Agent: Lavf59.25.100
Session: 545498661

- сервер
RTSP/1.0 200 OK
CSeq: 4
Server: gortsplib
Session: 545498661

ПОСЛЕ этого поделие на основе либ ффмпега начинать слать RTP пакеты по ранее установленному TCP соединению на тот же порт.

т.е. как бэ сервер не говорит «публикации» PLAY только когда требуется, что кажется проблемой…

Что же делать как быть!?

 , , , ,

wolverin
()

Выделенный-облачный сервер где взять?

Форум — Admin

Приветствую.

На 1 ГБит/с БЕЗ тарификации по объему трафика.

Посоветуйте? В идеале где то на Урале-Сибири, чтобы время отклика минимальное получить.

Сейчас на timeweb плачу 8000 в месяц за выделенный E3-1230v5, 32 Гб RAM, 2 х 240 Gb SSD, но до них 40 мс только пинг ходит от меня.

 ,

wolverin
()

Пересжатие H264 с потерей кадров

Форум — Development

Приветствую.

Опять продолжение темы Запись сырого h264

Теоретический подсчет показал, что в сравнении с raw записью 1920х1080 MJPEG создающую нагрузку на носитель где то 1.2 Мб/c при 5 фпс, такая же запись H264 при 30 фпс создает поток где то 0.6 Мб/c, т.е. в принципе уже проверенную пропускную способность по записи укладываюсь, а вот с онлайн стримом вопрос.

Абсолютно точно придется пропускать кадры. Если для мжпег удалось сделать это очень равномерно, т.к. из очереди std::deque всегда брался для пересжатия из мжпег в х264 только последний кадр, то в случае с h264 нужно занусуть видео поток в канал где то до 2мбит/c, т.е. декодирование->масштабирование в 2-2.5 раза->сжатие. Все это делается на слабенькой arm пока без доступа к ядру гпу.

Первое что приходит в голову это подряд пересжимать кадры и сбрасывать очередь каждый раз при поступлении I кадра - да камера отдает I кадры каждую секунды и еще 29 P кадров, расстояние не большое, но «рывок» в конце каждой секунды все равно хоть как будет и скорее всего придется отбросить 2/3 кадров (по аналогии с мжпег пересжатием в х264).

Буду благодарен любой идее )

 , , ,

wolverin
()

Как забирается RTP поток у сервера RTSP?

Форум — Development

Приветствую.

Дошли руки для продолжения темы (RTSP публикация надежна?), но пока классический вариант освоить требуется.

Все это «ноу-хау» )) делаю на основе кода на С умершего ffserver от ffmpeg, в котором и реализован только сам RTSP (+html) сервер, а RTP протокол обернут в библиотеки ffmpeg-a - собсна что мне и нужно с одной стороны, но не дает понимание как там работает RTP.

С RTSP понятно - слушающий сокет, через который по входящим событиям (poll) парсится текст. После rtsp согласования открывается еще один (хотя в netstat вижу 2 для rtp и rtcp) слушающий сокет, в который начинают писаться кадры, обернутые в rtp и разбитые на udp/tcp пакеты (в первую очередь рассматриваю udp соединение).

Собсна из за непонимания как происходит RTP обмен вопросы

  1. rtp клиент запрашивает каждый раз новые данные или rtsp сервер просто пишет в сокет, пока в сокет rtsp не придет закрыть соединение?
  2. несколько причин есть очередного рефакторинга, но одна из них это в том, что rtsp клиент может отваливаться и не прислать teardown - с помощью чего подобное лучше отслеживать, исходить из того, что каждый rtsp клиент обязан периодически слать options и по таймауту закрывать сокеты?
  3. вся эта кухня делается на одноплатнике, который уже занят на 75% по процессору, а хочется не только отдавать больше одного видео потока как это сделано в ffserver, но еще и разные (последние создадут нагрузку только на чтение с флешки помимо сети для случая однотипных) - однопоточный RTSP/RTP сервер потянет такие задачи для случая до 10 соединений или лучше сразу разделять 2 протокола на 2 потока?

Пы.Сы. звиняйте за многа букав )

 , , ,

wolverin
()

mariadb 10.3.39 не меняются переменные из конфига

Форум — Admin

Приветствую

Некоторые изменения нужно внести в конфиг в частности innodb_buffer_pool_size хочу дефолтные поднять

написано так

:/etc/mysql/mariadb.conf.d# grep -v ^# 50-server.cnf

[server]

[mysqld]

user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql

bind-address            = 127.0.0.1


query_cache_size        = 16M

log_error = /var/log/mysql/error.log
expire_logs_days        = 10


character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

innodb_buffer_pool_size = 268435456


[embedded]

[mariadb]

[mariadb-10.3]

захожу в клиента смотрю после рестарта

MariaDB [(none)]> show variables like 'innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size       | 134217728      |
| innodb_buffer_pool_dump_at_shutdown | ON             |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_dump_pct         | 25             |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 1              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | ON             |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 134217728      |
+-------------------------------------+----------------+

Почему так? из клиента устанавливается нормально как

SET GLOBAL innodb_buffer_pool_size = 256000000;

 ,

wolverin
()

Подсчет потерь (алгоритм)?

Форум — Development

Приветствую.

Нуждаюсь в идеи )

Сцуть - есть 100500 железок в интернетах, которые раз в 10-15 минут опрашиваются, в БД в поле отправленных запросов пишу +1, когда ответ приходит (снимок) в БД в поле полученных ответов пишу +1 и дата-время последнего ответа

Вопрос - как посчитать АКТУАЛЬНОЕ количество потерь в % скажем за 10 или 100 опросов??? так чтобы не плодить количество записей

 

wolverin
()

No space left on device

Форум — Admin

Приветствую.

как такое может быть, что

# df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/mmcblk1p1   40M   12M   29M  30% /mnt/mmcblk0p1
/dev/mmcblk1p2  1.2G  1.1G     0 100% /mnt/mmcblk0p2
/dev/mmcblk1p3  2.5G  600M  1.9G  25% /mnt/mmcblk0p3

НО

# cp 512MB.swap /mnt/mmcblk0p3/
cp: cannot create regular file '/mnt/mmcblk0p3/512MB.swap': No space left on device

 , , , ,

wolverin
()

nftables для FQDN

Форум — Admin

Приветствую.

Раз уж приходится переходить с iptables, которое сабж не умеет, на nftables появилась такая возможность?

 ,

wolverin
()

Ламбда в списке инициализации конструктора ?

Форум — Development

Приветствую.

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

class CParamsTXT
{
private:
    const bool bAutoCommit;
    IBPP::Transaction tr;
    IBPP::Statement st;
    CDefFile * pCfg;
    const string Typ, Section, id_bank;

    bool getAutoCommit(IBPP::Transaction tr)
    {
fprintf(stderr, "\n111 111\n");
        const bool rt = !tr->Started();
        if (rt) tr->Start();
        return rt;
    }

protected:
    string GetParam(string & param, string Field, string Ident, string Default = "")
    { ... }

public:
    const string DateFormat, DatePoint, DecPoint, codepage;
    vector<string> svF;
    const char cNote;

    CParamsTXT(CDefFile * pCfg_, IBPP::Transaction tr_, IBPP::Statement st_, string Typ_, string Section_, string id_bank_, string DateFormat_, string DatePoint_, string DecPoint_, string codepage_, string Note_)
    :
        bAutoCommit([](IBPP::Transaction tr_){
fprintf(stderr, "\n111 222\n");
            const bool rt = !tr_->Started();
            if (rt) tr_->Start();
            return rt;}),
//      bAutoCommit(getAutoCommit(tr_)),
        tr(tr_), st(st_), pCfg(pCfg_),
        Typ(Typ_), Section(Section_), id_bank(id_bank_),
        DateFormat(GetParam(DateFormat_, "date_format", "DateFormat", "d/m/y")),
        DatePoint(GetParam(DatePoint_, "date_point", "DatePoint", "/")),
        DecPoint(GetParam(DecPoint_, "dec_point", "DecPoint", ".")),
        codepage(GetParam(codepage_, "codepage", "codepage", "DOS")),
        cNote(GetParam(Note_, "note", "NoteTXT", "")[0])
    { }

 

wolverin
()

RSS подписка на новые темы