Forum Programmation.autre [BASH/PHP] Monitoring - Plein de questions

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
15
fév.
2020
  1. Comment "sécuriser" dans son code une commande qui peut freeze ?

Cette commande permet de récupérer la température "du CPU" (ou plus tôt de la carte mère au niveau du CPU). Mais quand je joue à un jeu et que le CPU squat au delà des 95° durant quelques temps, après elle freeze. Même quand elle est lancée dans un shell puis que je tente de l’arrêter via CTRL+C, ça ne l'arrête pas.
Comment intégrer une sécurité dans mon script pour l'empêcher de bloquer l'OS (qu'il faut rebooter en tchouquant sur le bouton d'extinction) ?

cat /sys/class/thermal/thermal_zone0/temp
  1. Y a-t-il moyen de récupérer un "pourcentage de l'utilisation (ou autre) en cours des disques" un peu comme avec le CPU ? Afin de visualiser quand les HDD/SSD sont occupé ou glandent.

  2. Y a-t-il moyen d’exécuter cette commande depuis www-data sans ouvrir de trou de sécurité ?

echo $(for i in /dev/sd[a-z]; do hddtemp "$i" | cut -d ":" -f1,3 | sed "s/\/dev\///" | grep "[0-9]\{1,\}°C" && { cat $(echo "/sys/block/$i/queue/rotational" | sed "s/\/dev\///") | grep "1" 2>&1 && echo "(HDD)" || echo "(SSD)"; } done) | { grep -v -e "^[[:space:]]*$" || echo "ERR : $USER cant use hddtemp ?\nTape :\n sudo apt install hddtemp\n sudo chmod u+s /usr/sbin/hddtemp" ; } | sed "s/[0-1] (/(/"

Edit : C'est l'accès à hddtemp "$i" qui nécessite soit un chmod (dangereux ?) soit l'accès root.

  1. Y a-t-il moyen de savoir, en Bash ou en PHP, si le système s’exécute sur un SSD ou un HDD ?

  2. Je voudrais établir un "score d'utilisation globale du serveur (sur 100)" afin de pouvoir intégrer un compteur (façon voiture). Sur quelles valeurs vous baseriez-vous ? (cpu, ram, réseau, what else ?)

  3. Est-ce normal que de temps en temps le Pool d'Entropie chute jusqu'à +-800 ? (phénomène observé sur plusieurs machines)

  • # Pas de réponse

    Posté par  . Évalué à 4.

    Salut,

    Comment "sécuriser" dans son code une commande qui peut freeze ?

    En faisant de l'async ?

    Y a-t-il moyen de récupérer un "pourcentage de l'utilisation (ou autre) en cours des disques" un peu comme avec le CPU ? Afin de visualiser quand les HDD/SSD sont occupé ou glandent.

    htop ou autre top-like arrivent bien à le faire, donc à priori oui :)

    Y a-t-il moyen d’exécuter cette commande depuis www-data sans ouvrir de trou de sécurité ?

    Non. Je vois entre autre un sudo dans le flot…

    Y a-t-il moyen de savoir, en Bash ou en PHP, si le système s’exécute sur un SSD ou un HDD ?

    Quel rapport s'il est déjà en RAM ?

    Je voudrais établir un "score d'utilisation globale du serveur (sur 100)" afin de pouvoir intégrer un compteur (façon voiture). Sur quelles valeurs vous baseriez-vous ? (cpu, ram, réseau, what else ?)

    Ça, c'est du pur délire. Une aggrégation se fait généralement proprement, si tu ne sais même pas sur quoi tu vas la baser, comment estimer les poids des différentes composantes ?

    Est-ce normal que de temps en temps le Pool d'Entropie chute jusqu'à +-800 ? (phénomène observé sur plusieurs machines)

    Ça dépend du RNG.

    Donc voilà, pas de réponse à tes questions, mais des pistes de recherche et de lectures ;)

    Matricule 23415

    • [^] # Re: Pas de réponse

      Posté par  . Évalué à 1. Dernière modification le 15 février 2020 à 17:49.

      Salut 😀

      En faisant de l'async ?

      ? ? ? (c'est pas le principe dans AngularJS ?)

      htop ou autre top-like arrivent bien à le faire, donc à priori oui :)😄

      Pas bête, les commandes indiquées ici ont l'air prometteuses si on peut les lancer à la façon top -b -n1

      Non. Je vois entre autre un sudo dans le flot…

      Le sudo se trouve dans le message d'erreur affiché si la commande ne fonctionne pas (pour indiquer à l'user qu'il doit installer hddtemp et la perm à éditer sur le binaire de hddtemp)

      Quel rapport s'il est déjà en RAM ?

      Savoir si /tmp est stocké sur un SSD (et pas sur HDD ni USB ni µSD). Si oui activer mon module de multithreading.

      Une aggrégation se fait généralement proprement, si tu ne sais même pas sur quoi tu vas la baser, comment estimer les poids des différentes composantes ?

      D'où ma question afin d'avoir des avis pluraliste 😄

      AMHA on peut estimer le cas idéal que 50% de la RAM + 50% CPU + 50% reseau = 50 % de la machine. Il doit y avoir moyen d'arriver a faire une estimation global (qui vaut se qui vaut) quand les valeurs varient.
      Après ça suit une double logique :

      1. créer un petit support visuel (barre, graphique ou autre) tout con pour visualiser d'un coups d’œil le résumé du taux d'utilisation. (de toute façon les données plus concrête sont affichées en dessous)
      2. créer un support visuel qui estime en temps réel la consommation électrique de la machine (pour ça je pense estimer l'utilisation de chaque composant puis comparer à un tableau)

      Ça dépend du RNG.

      Machines lambda.

      • [^] # Re: Pas de réponse

        Posté par  . Évalué à 3.

        Salut !

        En faisant de l'async ?

        ? ? ? (c'est pas le principe dans AngularJS ?)

        Euh, possible, mais tu parle de bash et php…

        Le sudo se trouve dans le message d'erreur affiché si la commande ne fonctionne pas (pour indiquer à l'user qu'il doit installer hddtemp et la perm à éditer sur le binaire de hddtemp)

        Oui, ça j'ai bien vu. Et c'est bien le sens de ma réponse : s'il y a sudo possible pour un utilisateur, il y a déjà un trou. Sinon, c'est le genre d'info qui va dans la documentation d'installation pour l'administrateur. Non ?

        AMHA on peut estimer le cas idéal que 50% de la RAM + 50% CPU + 50% reseau = 50 % de la machine.

        Autant RAM, disque, CPU ça peut se mesurer facilement, autant réseau je suis moins sûr.

        créer un support visuel qui estime en temps réel la consommation électrique de la machine (pour ça je pense estimer l'utilisation de chaque composant puis comparer à un tableau)

        Pour ça, autant utiliser un composant physique, non ? Genre Contrôleur de consommation électrique (premier lien trouvé…)

        Ça dépend du RNG.

        Machines lambda.

        Alors ça dépend du RNG de la machine lambda. :p

        Matricule 23415

        • [^] # Re: Pas de réponse

          Posté par  . Évalué à 1.

          Autant RAM, disque, CPU ça peut se mesurer facilement, autant réseau je suis moins sûr.

          Peut-être lancer un speedtest de temps en temps pour récupérer la valeur bandwidth max puis comparer avec la valeur a un instant T.

          Sinon, c'est le genre d'info qui va dans la documentation d'installation pour l'administrateur. Non ?

          Dans la version en cours en effet. Dans la version duquel s'est tiré cela permet d'afficher le message d'erreur direct dans le conky. Je l'ai laissé pour qui veut tester la commande.

          Pour ça, autant utiliser un composant physique, non ? Genre Contrôleur de consommation électrique (premier lien trouvé…

          Boaf, il faut un par machine et on a pas les infos sur son ecran. La le but c'est vraiment l'affichage dans un conky en récupérant l'info depuis le reseau. Mais pour etalonner se sera pratique.

        • [^] # Re: Pas de réponse

          Posté par  . Évalué à 4.

          AMHA on peut estimer le cas idéal que 50% de la RAM + 50% CPU + 50% reseau = 50 % de la machine.

          Autant RAM, disque, CPU ça peut se mesurer facilement, autant réseau je suis moins sûr.

          Quand bien même, selon la nature des tâches en cours ce sera un composant ou un autre qui sera le goulet d'étranglement. Même en y mettant de la pondération, vouloir établir un pourcentage global d'utilisation d'une machine n'a donc pas vraiment de sens.

          • [^] # Re: Pas de réponse

            Posté par  . Évalué à 2. Dernière modification le 16 février 2020 à 16:10.

            Salut,

            Quand bien même, selon la nature des tâches en cours ce sera un composant ou un autre qui sera le goulet d'étranglement. Même en y mettant de la pondération, vouloir établir un pourcentage global d'utilisation d'une machine n'a donc pas vraiment de sens.

            Complètement d'accord.

            Après, c'est son projet, je ne veux pas le décourager.

            Matricule 23415

            • [^] # Re: Pas de réponse

              Posté par  . Évalué à 1. Dernière modification le 16 février 2020 à 22:34.

              Après, c'est son projet, je ne veux pas le décourager.

              Aucun risque, coder en écoutant de la zic bien zarb m'amuse, peu importe la direction que suit le code. 😋

              vouloir établir un pourcentage global d'utilisation d'une machine n'a donc pas vraiment de sens.

              D'un autre côté, je me dis que "tout étant mathématique", il doit y avoir moyens de quantifier l'état de l'usage de la machine. Après oui cela signifie "jouer avec la réalité" voir établir des poids/priorités (comme avec la répartition de charge).

              Baser le score sur l'estimation de la consommation électrique pourrait être le plus réaliste. Si l'algo estime que la machine consomme 100W sur 200W, alors établir que le score est de 50 sur 100.

              • [^] # Re: Pas de réponse

                Posté par  . Évalué à 3. Dernière modification le 17 février 2020 à 11:31.

                Baser le score sur l'estimation de la consommation électrique pourrait être le plus réaliste. Si l'algo estime que la machine consomme 100W sur 200W, alors établir que le score est de 50 sur 100.

                mais alors il faut connaitre la puissance de l'alimentation pour savoir si ta console est de 100W/200W ou 100W/1500W
                appliqué une marge car ton alimentation est certifiée GOLD80 si elle délivre 80% de sa puissance max à pleine charge, il faut donc estimée la charge,
                ex : ton alim consommera 1500W pour n'en délivrer que 1200W à pleine charge (80%)
                mais peut-être que 750W pour une conso reel de 525W (70%)

                après tu as deja les %CPU qui sont fonction du nombre de cpu/coeur.
                tu peux alors avoir une charge de 800% si tu as 8 coeurs par exemple.

                • [^] # Re: Pas de réponse

                  Posté par  . Évalué à 2. Dernière modification le 17 février 2020 à 12:40.

                  car ton alimentation est certifiée GOLD80 si elle délivre 80% de sa puissance max à pleine charge, il faut donc estimée la charge,

                  Même ça c'est déjà compliqué sans faire de doubles mesures. La certification est souvent faite en 110V (l'efficacité est meilleure en 220V), elle indique que l'alim ne passe pas la fourchette supérieure (donc à quelques dixièmes de pourcent une alim peut être déclassée). Enfin, le plus important, sur la plupart des alimentations (à part du haut de gamme) il y a une courbe d'efficacité selon la charge qui n'est pas plate, souvent c'est une cloche avec une apogée vers 50% de charge et qui monte très vite entre 0 et 20% (les certifs 80plus ne ciblent pas les faibles charges). Sur une alimentation ATX non certifiée (les horreurs du type Advance/Heden) ou sur une petite alim fournissant peu d'ampères, la courbe et son apogée sont souvent bien pires avec aussi un ripple et un voltage drop parfois conséquents.
                  Il y aussi les différents convertisseurs de tension sur la carte-mère/carte graphique/support de stockage qui bouffent un peu d'efficacité.

                  Baser le score sur l'estimation de la consommation électrique pourrait être le plus réaliste.

                  Là encore, la consommation va varier selon le composant et le goulet d'étranglement propre à la nature de chaque tâche. Le CPU peut consommer peu parce que la mémoire ou le réseau saturent (et eux ne consomment souvent pas grand chose en comparaison), ou parce qu'il se met en sécurité (thermique ou courant). À l'inverse, dans une config avec une grosse carte graphique, le CPU peut tourner à fond mais consommer moins qu'une charge moyenne sur le GPU.
                  Pareil, comment déterminer le 100% de l'indicateur de consommation ? Même en ne prenant que le CPU c'est assez délicat car une application normale comme Blender, x265 ou un jeu indiqueront au système que le CPU à "100% d'utilisation" mais un power virus comme mPrime le poussera encore plus loin en terme de consommation et de dissipation de chaleur. C'est bien pour vérifier la stabilité du système mais ce n'est pas vraiment un cas réel d'utilisation.

                  • [^] # Re: Pas de réponse

                    Posté par  . Évalué à 1.

                    L'alimentation ne renvoyant aucune information, à mon avis on ne peut que ne pas la prendre en compte dans un premier temps.

                    Pour le reste, si oui je suis d'accord il est difficile, pour le moment, d'évaluer la consommation d'une tour. Se sera par contre plus facile avec les nanomachines (dont, AMHA, les CPU/GPU sont les principaux variateurs de conso d’électricité *1).
                    De surcroît, toujours dans un premier temps, cela vise des serveurs (où, AMHA, les hardwares consommateurs importants à surveiller son moins nombreux que sur un pc gamer).

                    *1 a mon avis il sera facile d'identifier la conso de chacun :

                    1. lancer des boucles sur le CPU => checker sa conso à différent % usage via une machine externe ;
                    2. lancer des boucles sur le GPU (la je sais pas comment) => checker sa conso à différent % usage via une machine externe ;
                    3. et comparer le tout à la conso au repos (avec un max de logiciel stoppé, le but étant d'arriver à choper la conso résiduel de la carte hors CPU/GPU)

                    Là encore, la consommation va varier selon le composant et le goulet d'étranglement propre à la nature de chaque tâche.

                    On pourrait contrer par un affichage "de barre en mosaique". Par exemple une barre de taille 100, découpé en plusieurs catégories colorées chacune avec sa propre barre interne.

                    • [^] # Re: Pas de réponse

                      Posté par  . Évalué à 2. Dernière modification le 18 février 2020 à 08:02.

                      Se sera par contre plus facile avec les nanomachines

                      Euh je vois pas pourquoi, c'est la même chose sauf qu'on divise certaines puissances à tel point que l'ajout d'un SSD ou d'un périphérique USB peut demander un tiers de ce que fourni l'alim.
                      Les disparités de consommation des éléments étant plus petites, c'est plus compliqué étant donné que même des tâches anodines sur un PC vont pouvoir plomber ton indicateur.

                      *1 a mon avis il sera facile d'identifier la conso de chacun :

                      Je pense pas que tu as bien réfléchi à la complexité du truc. Admettons qu'une grosse charge CPU consomme 10W (5V 2A), une autre charge comme une copie de fichier sur une partition chiffrée de ton SSD peut consommer la même chose. Pire encore, tu auras inévitablement le cas de plusieurs petites tâches mises en parallèle qui consommeront un courant identique.
                      Mathématiquement, la conso globale est une équation avec de multiples inconnues donc dans de nombreux cas ce n'est pas possible de déterminer leurs valeurs en regardant uniquement le résultat.

                      Fais le test, prend un multimètre, un wattmètre ou une pince ampèremétrique.

                      On pourrait contrer par un affichage "de barre en mosaique". Par exemple une barre de taille 100, découpé en plusieurs catégories colorées chacune avec sa propre barre interne.

                      Ça fonctionnerait si chaque composant de l'ordi était indépendant, hors ils sont au moins dépendants du combo CPU+RAM et tout ne peut pas fonctionner à fond en parallèle, en particulier sur un SBC type RPi où beaucoup d'éléments sont tributaires de la charge sur le controleur USB.
                      De plus, ça impliquerait des points de mesure pour chaque brique et avec un SoC ou même un processeur x86 moderne c'est tout bonnement irréalisable.

                      • [^] # Re: Pas de réponse

                        Posté par  . Évalué à 0.

                        Euh je vois pas pourquoi, c'est la même chose sauf qu'on divise certaines puissances à tel point que l'ajout d'un SSD ou d'un périphérique USB peut demander un tiers de ce que fourni l'alim.

                        Dans une vidéos de vulgarisation, il expliquait que les premiers physiciens s'imaginaient des mondes ultra simplifiés afin de pouvoir élaborer leurs algos en diminuant l'effet théorie du chaos.

                        L'avantage d'une carte ARM c'est que tu peux réduire énormément de variables (refroidissement externe, alimentation externe, GPU inutilisé, carte son inutilisé, pas de périphérique usb, pas de réseau).

                        Fais le test, prend un multimètre, un wattmètre ou une pince ampèremétrique.

                        C'est justement d'observer un wattmètre qui m'a donné cette idée 😁 Là où les tours sont très très variables en conso, les odroid eux sont stable. (pour la petite anecdote en passant : ProjectM sur un pc lambda consomme une vingtaine de W 😃)

                        J'ai trouvé un algo pour calculer la puissance d'un CPU en fonction de sa fréquence (fréquence CPU que l'on peut récupérer en Bash si je ne m'abuse). Par contre je ne comprends pas le C dans l'algo.

                        P = C * V² * F
                        

                        "where P is power, C is the capacitance being switched per clock cycle, V is voltage, and F is the processor frequency (cycles per second)." (source)

                    • [^] # Re: Pas de réponse

                      Posté par  . Évalué à 3.

                      le mieux ca reste peut-être un wattmètre branché entre la prise de courant et le PC
                      qui envoie ses infos en bluetooth au PC qui traite la donnée.

                      ainsi tu as la console en temps reelle sur l'écran.

                      et si tu veux être précis, tu mets un Wattmettre sur tes cables d'alims
                      - cable CPU
                      - cable SATA
                      - cable GPU

                • [^] # Re: Pas de réponse

                  Posté par  . Évalué à 1. Dernière modification le 17 février 2020 à 20:01.

                  mais alors il faut connaitre la puissance de l'alimentation pour savoir si ta console est de 100W/200W ou 100W/1500W

                  Avec les nanomachines c'est juste impossible de connaître logiciellement le type d'alim. Est-ce un bloc, un hub usb, une alim dédiée ?
                  Au mieux on peut décider arbitrairement d'ajouter (ou fixer via conf) une valeur (par exemple si la machine tourne a +-10%, considéré une perte supplémentaire de x%, et ainsi de suite), ou de ne pas considérer cette valeur. (du point de vue des tours c'est interne, mais du point de vue des nanomachines l'alim peut être considéré comme "un élément hors machine").

        • [^] # Re: Pas de réponse

          Posté par  . Évalué à 3.

          autant réseau je suis moins sûr.

          ip -s link donne, par exemple:

          1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
              link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
              RX: bytes  packets  errors  dropped overrun mcast   
              16410506   152826   0       0       0       0       
              TX: bytes  packets  errors  dropped carrier collsns 
              16410506   152826   0       0       0       0       
          2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
              link/ether d8:cb:8a:e9:03:05 brd ff:ff:ff:ff:ff:ff
              RX: bytes  packets  errors  dropped overrun mcast   
              422738017  454508   0       0       0       23208   
              TX: bytes  packets  errors  dropped carrier collsns 
              17412954   242196   0       0       0       0       
          3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
              link/ether 18:d6:c7:01:8d:a4 brd ff:ff:ff:ff:ff:ff
              RX: bytes  packets  errors  dropped overrun mcast   
              0          0        0       0       0       0       
              TX: bytes  packets  errors  dropped carrier collsns 
              136932     732      0       0       0       0       
          

          On peut y mettre d'autres options, dont un formatage en json soit-disant plus facile à parser. Dans mon cas j'avais utilisé ip -s l | sed 's! *! !g' | awk '...' pour parser, ça se fait bien.
          Bon, évidemment, ça donne des stats sur l'instant t, pour y voir un intérêt, il faut prendre des mesures régulièrement, timestamp inclus, et comparer un certain nombre d'enregistrements.
          Par contre, je sais pas si on peut choper le débit maximal d'une interface réseau…

  • # surchauffe CPU

    Posté par  (site web personnel) . Évalué à 2.

    M'est avis que ce n'est pas la commande de lecture de température qui fait freezer la machine, c'est juste ton jeu qui fait trop chauffer ton CPU qui se met en sécurité thermique. Parce 95 degres, ça commence à faire beaucoup.
    Si tu joues sans que ce script de lecture de la température ne soit lancé, ça freeze aussi ?

    • [^] # Re: surchauffe CPU

      Posté par  . Évalué à 1. Dernière modification le 16 février 2020 à 14:17.

      L'OS en lui meme ne freeze pas, c'est quelque chose derrière qui ne se quitte pas et freeze l'arrêt de la machine (et les ventilos continuent de tourner au max).
      Apres dire si cela vient d'un unique jeu ou plusieurs, de steam ou autre, je ne saurais.
      Et quand cela arrive, la commande énoncée elle freeze si on la lance dans un shell ou un conky.

      Parce 95 degres, ça commence à faire beaucoup.

      Le max observé c'est 100° durant une conversion, si non c'est la temperature habituel dès qu'un jeu post-D2 est lancé 😂 A la galère comme a la galère 😅 (mon premier pc portable je le refroidissais avec les glacons en plastique bleu lors des tournois en ligne d'Age of mdr)

      • [^] # Re: surchauffe CPU

        Posté par  . Évalué à 3.

        Il y a tout de même un problème de refroidissement quelque part parce qu'à ces températures ton ordi fait certainement du thermal throttling.
        Pâte thermique sèche ou trop peu conductrice, pression insuffisante au revissage du radiateur, poussière. Il y a pas mal de raisons à investiguer.
        Après il existe aussi des mauvais designs. Dell par exemple est réputé pour sous-dimensionner leurs solutions de refroidissement.

        • [^] # Re: surchauffe CPU

          Posté par  . Évalué à 1.

          ton ordi fait certainement du thermal throttling.

          Après 5 min j'ai du 9 à 13 FPS sur LoL quand je joue avec deux potes :P

          Après il existe aussi des mauvais designs.

          Tout les pc portables qu'il m'est possible de voir depuis ces 5 dernières années. Dans les grandes surfaces c'est à peine s'il y a encore un système de refroidissement avec les portables équipés d'un SSD.

          • [^] # Re: surchauffe CPU

            Posté par  (Mastodon) . Évalué à 4.

            Démontage, coup de soufflette… ça ne fait jamais de mal !

            Au boulot j'avais un PC qui plantait quand je lançais la compil d'un système complet Android (4h de compil' tout de même). En le posant comme un livre (sur la tranche donc), il refroidissait bcp mieux, et ne plantait plus.

            Un coup de soufflette plus tard, il ne plantait plus du tout, même posé à plat (normalement).

            En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

            • [^] # Re: surchauffe CPU

              Posté par  . Évalué à 2.

              Demonter, coup d'aspirateur et changer la pâte thermique n'a eu aucun resultat. C'est le systeme de refroidissement (un échangeur thermique qui mène la chaleur du CPU a un ventilo qui ensuite expulse l'air dehors) qui ne ventile pas assez la machine. A part mettre a nu la carte mere et la refroidir facon nanopc, a mon avis c'est mort.

          • [^] # Re: surchauffe CPU

            Posté par  . Évalué à 4.

            La pâte thermique pré-appliquée dans les portables, les cartes graphiques ou sur les ventirads est assez bas de gamme. Ça vaut le coup de dépenser quelques euros pour la remplacer.

            Pour aller plus loin, on peut gagner quelques degrés en polissant la surface de contact du radiateur.

  • # HDD ou SSD

    Posté par  . Évalué à 2.

    lsblk te permet d'avoir l'information sur le type de disque d'une partition assez facilement.

    Par exemple lsblk -o MOUNTPOINT,ROTA | awk '/^\/ /{print $2}' affichera 0 si / est sur un SSD et 1 si c'est un HDD.

    • [^] # Re: HDD ou SSD

      Posté par  . Évalué à 1.

      Sympa la commande, merci ! Côté dommage, elle ne fait pas de différence entre SSD et µSD.

      • [^] # Re: HDD ou SSD

        Posté par  . Évalué à 3.

        Les systèmes sur ARM nomment souvent les partitions sur SD/MMC en tant que /dev/mmcblk***.
        Aussi tu peux faire la différence en regardant les options de montage ou en exécutant fstrim sur la partition car seuls les SSD supportent le trim (sauf s'ils sont très vieux ou derrière un mauvais adaptateur Sata vers USB).

        • [^] # Re: HDD ou SSD

          Posté par  . Évalué à 1. Dernière modification le 16 février 2020 à 23:25.

          Test (en root, la commande peut être très très très lente)

          fstrim -v / > /dev/null 2>&1 && echo 'Flash (ssd, µSD, MMC)' || echo 'Mécanique (HDD)'
          

          Sur HDD affiche : Mécanique (HDD)
          Sur SSD affiche : Flash (ssd, µSD, MMC)
          Sur µSD affiche : Flash (ssd, µSD, MMC)

          Les systèmes sur ARM nomment souvent les partitions sur SD/MMC en tant que /dev/mmcblk***.

          Oui j'avais songé à mettre une condition qui check si le prefix commence bien par /dev/sd (afin d'exclure tout ce qui n'est pas SSD) mais LVM et co perturbe l'affichage.

          • [^] # Re: HDD ou SSD

            Posté par  . Évalué à 2.

            Sur µSD affiche : Flash (ssd, µSD, MMC)

            Effectivement, il y a des SD/MMC qui supportent Trim :/

            mais LVM et co perturbe l'affichage.

            Tu peux toujours fouiller plus profond en regardant la dénomination des supports de stockage au lieu des partitions.
            Mais si je comprends bien tu cherches à déterminer sur quel support est stocké un fichier mis dans un JBOD, non ? Là c'est pas possible et de toute façon c'est pas vraiment une bonne idée de mélanger les deux technologies. Mieux vaut n'utiliser la SD uniquement que pour y stocker /boot et des fichiers multimédia en quasi lecture seule.

            • [^] # Re: HDD ou SSD

              Posté par  . Évalué à 1.

              Mais si je comprends bien tu cherches à déterminer sur quel support est stocké un fichier mis dans un JBOD, non

              Non je cherche seulement a savoir si /tmp est en RAM (ca c'est ok) ou sur un SSD (et pas SD, MMC, USB, etc) 😃

              • [^] # Re: HDD ou SSD

                Posté par  (site web personnel, Mastodon) . Évalué à 3.

                je cherche seulement a savoir si /tmp est en RAM (ca c'est ok) ou sur un SSD (et pas SD, MMC, USB, etc)

                Peut-être avec le numéro de device :

                tth@lubitel:~/Devel/FloatImg/$ stat /dev/shm /tmp | grep Device
                Device: 13h/19d Inode: 9601        Links: 2
                Device: 801h/2049d      Inode: 393987      Links: 20
                

                Mon /tmp est sur hda et /dev/shm en ram…
                ```

              • [^] # Re: HDD ou SSD

                Posté par  . Évalué à 2.

                Non je cherche seulement a savoir si /tmp est en RAM (ca c'est ok) ou sur un SSD (et pas SD, MMC, USB, etc)

                fstab et lvm.conf devrait avoir les infos. Tu peux faire un groupe utilisateur qui n'y a accès qu'en lecture seule.
                Tu pourrais aussi configurer /tmp en tmpfs et mettre une partition swap ou un fichier d'échange sur le SSD (et activer zswap). Ça te permettrait d'être sûr que c'est bien monté où il faut.

                • [^] # Re: HDD ou SSD

                  Posté par  . Évalué à 1. Dernière modification le 17 février 2020 à 19:37.

                  C'est pour un script, là j'ai un

                  if (tmp_is_in_ram() == true){ $module_multithreading = 'enable'; }
                  

                  et je souhaite ajouter un OR tmp_is_in_SSD() == true(partant du principe, peut-être à tort idk, que je peux utiliser le SSD comme de la RAM, par contre il faut exclure toutes les mémoires Flash qui ne sont pas des SSD, voir aussi exclure les vieux SSD, et le tout avec une commande très réactive (le plus faible impacte machine et la plus faible latence possible))

                  • [^] # Re: HDD ou SSD

                    Posté par  . Évalué à 2.

                    partant du principe, peut-être à tort idk, que je peux utiliser le SSD comme de la RAM,

                    D'où ma suggestion pour le swap. Si ce sont des machines que tu administres, les configurer pour cet usage te permettra de ne plus t'en soucier.

                    Pour le SSD, ce ne sera jamais aussi rapide que la RAM (surtout s'il est en Sata et encore plus s'il est connecté par USB) et tu vas l'user beaucoup plus rapidement, mais ça à toi de voir.
                    Commence déjà par configurer zram, et à l'usage si tu as besoin de plus que du double de RAM disponible tu crées un swap et tu passes à zswap.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.