Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2011, 17h06   #1
Invité de passage
 
Inscription : décembre 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 3
Points : 4
Points : 4
Par défaut [kernel] récupérer les statistiques réseaux pour un gouverneur cpufreq

Bonjour,

Je développe en ce moment un gouverneur cpufreq. Je dois utiliser des statistiques du réseaux.
Pour cela je pense utiliser la structure net_device_stats du fichier ./include/linux/netdevice.h. Le problème c'est que je ne sais pas comment récupérer les statistiques réseaux avec cette structure. Par exemple pour les stats du noyau il y a la structure sysinfo, on récupère les informations avec la fonction do_sysinfo(struct sysinfo *info)...

Cela fait 1 semaine que je cherche comment récupérer ces statistiques...


merci pour votre aide.

ps : je travail en espace noyau.
ternis est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/07/2011, 00h34   #2
Membre Expert
 
Étudiant
Inscription : août 2004
Messages : 500
Détails du profil
Informations personnelles :
Âge : 22

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2004
Messages : 500
Points : 1 017
Points : 1 017
Envoyer un message via MSN à Senaku-seishin
C'est avec la fonction dev_get_stat() ou dev->netdev_ops->get_stats, que on récupère les stats.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
/**
 *  dev_get_stats   - get network device statistics
 *  @dev: device to get statistics from
 *  @storage: place to store stats
 *
 *  Get network statistics from device. Return @storage.
 *  The device driver may provide its own method by setting
 *  dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats;
 *  otherwise the internal statistics structure is used.
 */
struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
                    struct rtnl_link_stats64 *storage)
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
{
    struct rtnl_link_stats64 temp;
    const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
 
    seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
           "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
           dev->name, stats->rx_bytes, stats->rx_packets,
           stats->rx_errors,
           stats->rx_dropped + stats->rx_missed_errors,
           stats->rx_fifo_errors,
           stats->rx_length_errors + stats->rx_over_errors +
            stats->rx_crc_errors + stats->rx_frame_errors,
           stats->rx_compressed, stats->multicast,
           stats->tx_bytes, stats->tx_packets,
           stats->tx_errors, stats->tx_dropped,
           stats->tx_fifo_errors, stats->collisions,
           stats->tx_carrier_errors +
            stats->tx_aborted_errors +
            stats->tx_window_errors +
            stats->tx_heartbeat_errors,
           stats->tx_compressed);
}
__________________
Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
Senaku-seishin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/07/2011, 13h22   #3
Invité de passage
 
Inscription : décembre 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 3
Points : 4
Points : 4
Merci beaucoup,

Je ne sais pas comment j'ai raté cette fonction, mais bon le principal c'est que ça marche !
ternis est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h07.


 
 
 
 
Partenaires

Hébergement Web