Charge CPU Frigate élevée avec CORAL

Bonjour à tous,

J’ai installé récemment une google Coral (M2) afin de réduire la charge de mon CPU, mais celle-ci reste élevée (pas vraiment de différence en activant ou désactivant la coral voir plus de charge):


Sur ce graphe, la charge du docker qui ne contient qu’un CT Frigate, un Samba puis portainer agent

Ma configuration:

  • Nuc I5 (32Go de ram / 8 coeurs) => CT LXC Docker dédié NVR (2Go de ram 2 coeurs) avec uniquement Frigate et Samba dans ce docker
  • 2 Caméras (1 ou j’utilise la détection, 1 sans détection, c’est juste pour l’avoir dans la même interface)

La coral semble correctement détectée et installée (tpu found):

image
Dans mon fichier de config j’ai bien:

detectors:
  coral1:
   type: edgetpu
   device: pci:0

Puis:

Ce qui m’interpelle également, c’est que la caméra sur laquelle je n’utilise pas de détection impacte fortement le CPU, alors qu’il ne devrais pas (je m’attends à ce que cette caméra n’impacte pas ou alors très peu le CPU):

Je précise également que j’utilise des zones, des masques de détection, que la detection se fait sur un flux avec une « faible » résolution, et qu’il n’y a pas de resizing de flux (même résolution entre le flux vidéo et le paramétrage dans « detect ».

Voilà à quoi ressemble mon fichier de config:

mqtt:
  host: 192.168.1.xxx
  user: xxx
  password: xxx
 
detectors:
  coral1:
   type: edgetpu
   device: pci:0

cameras:

  camera_interieur:
    ffmpeg:
      inputs:
        - path: rtsp://xxxxxxxxxx
          roles:
            - detect
            - rtmp
            - record
    detect:
      width: 1280
      height: 720
      enabled: false
    record:
      enabled: false
    rtmp:
      enabled: false
    snapshots:
      enabled: false
	  
  camera_sonette:
    ffmpeg: 
      inputs:
        - path: rtsp://xxxxxxxxxx
          roles:
            - record        
        - path: rtsp://xxxxxxxxxx
          roles:
            - detect                  
    rtmp:
      enabled: false          
      
    detect:
      width: 800  
      #1280
      height: 400  
      #720
          
    objects:
      filters:
        person:
          min_score: 0.5
          #0.5
          threshold: 0.6
          #0.7
          
    motion: 
      mask: 
        - 800,0,336,0,386,200,800,412  
        - 75,250,100,250,100,290,75,290
    zones:
      detection_zone:
        coordinates: 599,240,800,308,800,400,371,400,373,363,0,364,0,289,0,259,64,258,66,287,90,290,89,252,0,253,0,0,500,0        
          
    record:
      enabled: true
      events:
        retain:
          default: 2
        required_zones:
          - detection_zone          
    snapshots: 
      enabled: true
      retain: 
        default: 2
      required_zones: 
        - detection_zone

Extrait de mon compose:

#######   Frigate   ######
  frigate:
    image: ghcr.io/blakeblackshear/frigate:stable
    container_name: frigate
    environment:
      - TZ=Europe/Paris
    volumes:
      - /home/frigate/config/config.yml:/config/config.yml
      - /home/frigate/data:/media/frigate
      - type: tmpfs # 1GB of memory
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    devices: 
      - /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
    ports:
      - 1935:1935
      - 5000:5000
    restart: unless-stopped

Des pistes?

Salut @Dapolux

Tu sembles sous proxmox, ct lxc ou vm ? quel type de processeur dans la machine ?

Dans ton compose on ne te voit pas monter l’igpu de ton processeur, et je partirai là dessus.

Même si le coral s’occupe de la détection, c’est ton proce qui traite le stream.

D’ailleurs quel type de stream envoie ta caméra sans détection ?

Dans le compose donné dans la doc frigate :

    devices:
      - /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
      - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware

[EDIT] core i5 docker dans un CT lxc, désolé je viens juste de me réveiller :stuck_out_tongue:

Hello @Herbs, et merci de faire avancer les choses,

CT LXC sous proxmox. 8 x Intel(R) Core™ i5-8250U CPU @ 1.60GHz (1 Socket).

Infos issues de VLC:

image

J’ai donc ajouté la partie « renderD128 », puis dans le fichier de config « hwaccel_args: preset-intel-qsv-h264 » sur les 2 caméras.
==> Je gagne quelques % de CPU, merci!! (la sa oscille entre 10% et 15% maintenant contre 20% et 25% tout à l’heure. D’après ce que j’ai vu sur le net, normalement je suis sensé encore descendre il me semble.

T’as quoi sous proxmox dans le fichier de conf du ct lxc /etc/pve/xxx.conf (selon le nommage de ton ct) ?

Tu devrais avoir un truc du genre, pour déjà faire le montage proxmox → lxc :

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

Ce ct lxc, il est priviligié ou non ? les drivers intel sont installés dans le ct ?

Et dernière question, ton % de proce tu le regardes au niveau du ct ou au niveau du Host proxmox ?

Quand je regarde sous proxmox dans le cas d’une accélération matérielle sous plex, niveau ct je suis de mémoire à 10-12%, mais à environ 3-5% sur le host proxmox :wink:

dans le fichier de conf du ct j’avais ajouté ceci suite à divers lectures de forums:

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/apex_0 dev/apex_0 none bind,optional,create=file 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw

image

les drivers de quoi? J’ai installé ceux du Coral, en suivant la procédure, jusqu’à réussir les tests d’exemple (j’ai pu le faire au niveau host, puis en suis au niveau du CT docker):

root@docker .../coral/pycoral# python3 examples/classify_image.py \
> --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
> --labels test_data/inat_bird_labels.txt \
> --input test_data/parrot.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
11.8ms
2.6ms
2.6ms
2.6ms
2.6ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.75781

Les % que j’ai donné sont bien au niveau CT, ceux au niveau host sont plus faibles:

Du coup j’en déduis que la charge est à priori normale?

Salut
En lisant ça

et

Moi je vois 2 caméras sur 2 avec la detection et en plus une avec une résolution supérieure aux recommandations

Hello @Pulpy-Luke ,

Si la détection est désactivée (enabled = false) il y a tout de même des traitements?
C’est la caméra que je n’utilise que pour le live (mais que je souhaite garder dans la même interface).

Cette résolution est pourtant plus faible que celle par défaut (800x400 au lieu de 1280x720), et j’ai mis la même résolution que celle du flux pour que frigate n’ai pas a faire de resizing.
Qu’est ce qu’il te choque?

Perso j’aurai pas mis du tout de section detect, voir même pas du tout de config de cam.
Si c’est pour faire la consultation en direct, un carte rstp marche tout aussi bien

Coté frigate, la résolution la plus faible est la meilleure, il parle de 320x320
Camera setup | Frigate.
Là encore la visu en direct avec ce truc est dégeu mais tu n’as pas besoin se passer par frigate pour ça .Tu lui mets une résolution meilleure uniquement pour la partie recording/snaptshot et tu regarde le flux en direct egalement.

Bonjour les amis. Je vous expose mes petits soucis :
Voici ma config : Ma machine est un Tiny M910Q I5 6500T avec 16 Go RAM. HA installé sous Proxmox sur une VM - Frigate installé sous dàcker dans une autre VM Debian avec la clé Coral. Pour le moment une camera Réolink 510WA. L’ensemble fonctionne mais j’ai 4 interrogations :

  1. La la led de ma clé Coral se met à clignoter par moment plusieurs fois et s’arrête. Est-ce un fonctionnement normal ou ma clé a un problème a votre avis ?
  2. 2 sockets-2coeurs sont attribués à ma VM Frigate . Ma conso CPU a des pics de 15% maxi et tourne à 7% pour les valeurs les plus faibles (mesure sur plusieurs jours). Est-ce un fonctionnement normal ?
  3. Ma camera Réolink détecte les personnes avec une indication de « Person: 80% » Maxi. Est-ce normal ?
  4. Ma Réolink 510WA est positionnée à 20 m d’une porte que je souhaite protéger. Le jour pas de soucis la détection fonctionne nickel quand on approche de la porte mais à la tombé de la nuit plus de détection près de la porte. Il faut s’approcher de la camera, pour une détection. Pensez-vous qu’i s’agit des performances de la camera ou je peux faire des réglages ?
    Merci de vos expertises

Hello @Arn49 ,

  1. Je ne peux te répondre sur ce point je n’ai pas la version usb
  2. J’aurais tendance à dire que c’est normal car j’ai des valeurs similaires:
  3. Rien d’anormal à priori (je n’ai jamais eu de 100% si c’est le sens de ta question). Après tu peux paramétrer la valeur minimale de considération de détection de personnes si tu le souhaites.
  4. J’ai le même comportement chez moi, très peu de détections la nuit tombée. Pour moi c’est normal car c’est « plus dur » de constater une personne sur une image sombre de loin (c’est pareil pour nous même à l’oeil, donc ça me semble pareil pour l’analyse vidéo)

SAlut

Attention dans le cas d’une clé coral et proxmox il est imperatif de faire un container LXC et non une VM

il existe deux trois posts a ce sujet
mais voila +/- les sources que j’ai utilisées pour a config

pour ta question 1
La la led de ma clé Coral se met à clignoter par moment plusieurs fois et s’arrête

oui j’ai le meme comportement elle reste allumée, je pense que le clignotement commence lors d’une detection

Et quel serait le problème si Frigate est installé sur un docker dans une VM et non un LXC ?

Hello

regarde les articles… :wink:

et aussi la doc

je suis pas trop :cow2:

Proxmox

It is recommended to run Frigate in LXC for maximum performance. See this discussion for more information.