2016-12-22 4 views
0

Est-il possible que les performances de copy_from_user() et copy_to_user() soient vraiment mauvaises lorsque le processus est occupé à faire quelque chose ou que le noyau est lourd? Quelle est la performance de copy_from/to_user dans des circonstances normales, plusieurs microsecondes pour copier plusieurs centaines d'octets? Est-il possible que cela prenne plusieurs millisecondes pour que le système soit occupé?performances de copy_from_user/copy_to_user lorsque le processus et le noyau sont occupés

Si vous comparez copy_from_user avec memcpy, à quel point memcpy sera-t-il plus rapide puisqu'il n'a pas la vérification d'intégrité et les blocages?

merci!

Répondre

1

Vous voulez dire des recherches, pas des blocages? Les primitives ne font pas beaucoup plus que le memcpy et vous allez mesurer n'importe quelle "économie" en passant à la simple memcpy (ce que vous ne devriez pas faire), vous faites déjà quelque chose de mal. Copy_to_user/quoi que ce soit dans le cas courant ne fait presque rien d'autre que memcpy. Le seul cas où ils finissent par être coûteux prend une erreur de page lors de l'accès aux tampons de l'espace utilisateur. Mais si cette primitive arrive à en prendre un, memcpy devrait aussi le faire - les données ne sont pas dans le bélier après tout (ou elles doivent être non partagées, peu importe).

Tl, dr votre question est très louche et le passage à memcpy ne peut pas aider à éventuellement tout problème que vous avez

Que et comment avez-vous mesuré poser des questions sur ces primitives?