当前位置:网站首页>Technologie zéro copie
Technologie zéro copie
2022-04-23 13:44:00 【Tabe】
Écrivez le titre du catalogue ici
Transfert traditionnel de fichiers
Si le serveur doit fournir la fonctionnalité de transfert de fichiers,La façon la plus simple de penser est:Lire les fichiers sur le disque,Puis envoyé au client via le Protocole réseau.
La tradition I/O Fonctionne comme suit:,La lecture et l'écriture des données sont copiées de l'Espace utilisateur à l'espace du noyau,Et les données de l'espace du noyau passent par le niveau du système d'exploitation I/O L'interface lit ou écrit à partir du disque.
Tout d'abord,,Au cours de la période 4 Changement de contexte entre l'état utilisateur secondaire et l'état du noyau,Parce que deux appels système se sont produits,Une fois read() ,Une fois write(),Chaque appel système passe d'abord de l'état utilisateur à l'état du noyau,Attendre que le noyau ait terminé la tâche,Passer de l'état du noyau à l'état utilisateur.Le passage au contexte n'est pas petit,Un changement prend des dizaines de nanosecondes à quelques microsecondes,Bien que le temps semble court,Mais dans un scénario de haute concurrence,Ce temps est facilement accumulé et amplifié,Qui affecte le rendement du système.
Deuxièmement,,C'est arrivé. 4 Copie des données secondaires,Deux d'entre eux DMA Copie de,Les deux autres sont passés CPU Copie,Parlons de ce processus.:Première copie,Copier les données du disque dans le tampon du noyau du système d'exploitation,Le processus de copie est effectué par DMA Transport.Deuxième copie,Copier les données du tampon du noyau dans le tampon de l'utilisateur,Pour que notre application puisse utiliser cette partie des données,Cette copie au processus est faite par CPU Terminé.Troisième copie,Copiez les données que vous venez de copier dans le tampon de l'utilisateur,Copie au noyau socket Dans le tampon de,Ce processus est toujours le résultat CPU Transport.Quatrième copie,Pour mettre le noyau socket Données dans le tampon,Copier dans le tampon de la carte réseau,Ce processus est de nouveau DMA Transport.
On ne fait que déplacer une copie des données.,Il a été transporté. 4 Une fois,Beaucoup plus de dépenses inutiles,,Réduit considérablement les performances du système.Alors...,Pour améliorer les performances de transfert de fichiers, Il est nécessaire de réduire le nombre de commutateurs de contexte et de copies de mémoire entre l'état utilisateur et l'état du noyau .
Technologie zéro copie
mmap + write
Devant, on sait,read() Lors d'un appel système, les données du tampon du noyau sont copiées dans le tampon de l'utilisateur,Afin de réduire les coûts,Nous pouvons utiliser mmap() Remplacer read() Fonction d'appel système.mmap() La fonction d'appel système va directement mettre les données dans le tampon du noyau「Cartographie」Vers l'espace Utilisateur,Voilà.,Le noyau du système d'exploitation et l'espace Utilisateur n'ont plus besoin d'opérations de copie de données.
Le processus spécifique est le suivant::
- Le processus d'application a appelé mmap() Après,DMA Copiera les données du disque dans le tampon du noyau.
- Et voilà.,Processus d'application et noyau du système d'exploitation「Partage」Ce tampon;
- Rappel du processus d'application write(),Le système d'exploitation copie les données du tampon du noyau directement à socket Dans le tampon,Tout cela se passe dans l'état du noyau,ParCPUPour manipuler les données;
- Enfin,Pour mettre le noyau socket Données dans le tampon,Copier dans le tampon de la carte réseau,Ce processus est réalisé par DMA Transport. Nous pouvons savoir,En utilisant
mmap() Pour remplacer read(), Un processus qui réduit la copie des données une fois.Mais ce n'est pas la copie zéro idéale.,Parce qu'il faut encore passer CPU Copier les données du tampon du noyau dans socket Dans la zone tampon,Et encore nécessaire 4 Changement de contexte secondaire,Parce que l'appel système est toujours 2 Une fois.
sendfile
In Linux Version du noyau 2.1 Moyenne,Fournit une fonction d'appel système dédiée à l'envoi de fichiers sendfile(),La forme de la fonction estssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
Ses deux premiers paramètres sont les descripteurs de fichiers de destination et de source,Les deux derniers paramètres sont l'offset du côté source et la longueur des données copiées,La valeur de retour est la longueur réelle des données copiées.
Tout d'abord,,Il remplace le précédent read() Et write() Ces deux appels système,Cela réduit le nombre d'appels système,Et ça diminue. 2 Frais généraux de commutation sous - contextuelle.
Deuxièmement,,Cet appel système,Vous pouvez copier les données du tampon du noyau directement dans socket Dans la zone tampon,Ne plus copier dans l'état utilisateur,C'est tout. 2 Changement de contexte secondaire,Et 3 Copie des données secondaires.Comme le montre la figure ci - dessous::
版权声明
本文为[Tabe]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231333157741.html
边栏推荐
- Information: 2021 / 9 / 29 10:01 - build completed with 1 error and 0 warnings in 11S 30ms error exception handling
- Software test system integration project management engineer full truth simulation question (including answer and analysis)
- QT调用外部程序
- Failure to connect due to improper parameter setting of Rac environment database node. Troubleshooting
- [point cloud series] multi view neural human rendering (NHR)
- Isparta is a tool that generates webp, GIF and apng from PNG and supports the transformation of webp, GIF and apng
- TIA博途中基於高速計數器觸發中斷OB40實現定點加工動作的具體方法示例
- Special window function rank, deny_ rank, row_ number
- MySQL and PgSQL time related operations
- torch. Where can transfer gradient
猜你喜欢
Apache Atlas Compilation and installation records
Dolphin scheduler scheduling spark task stepping record
Apache seatunnel 2.1.0 deployment and stepping on the pit
Machine learning -- PCA and LDA
QT调用外部程序
Window analysis function last_ VALUE,FIRST_ VALUE,lag,lead
[point cloud series] neural opportunity point cloud (NOPC)
[point cloud series] pointfilter: point cloud filtering via encoder decoder modeling
TIA博途中基於高速計數器觸發中斷OB40實現定點加工動作的具體方法示例
SAP ui5 application development tutorial 72 - animation effect setting of SAP ui5 page routing
随机推荐
Error 403 in most cases, you or one of your dependencies are requesting
torch. Where can transfer gradient
Apache seatunnel 2.1.0 deployment and stepping on the pit
Tangent space
Test the time required for Oracle library to create an index with 7 million data in a common way
[Video] Bayesian inference in linear regression and R language prediction of workers' wage data | data sharing
Oracle calculates the difference between two dates in seconds, minutes, hours and days
Zero copy technology
Campus takeout system - "nongzhibang" wechat native cloud development applet
Influence of openssh version on SSH mutual trust creation in RAC environment
Oracle generates millisecond timestamps
这个SQL语名是什么意思
RTOS mainstream assessment
Analysis of cluster component gpnp failed to start successfully in RAC environment
零拷贝技术
Exemple de méthode de réalisation de l'action d'usinage à point fixe basée sur l'interruption de déclenchement du compteur à grande vitesse ob40 pendant le voyage de tia Expo
Oracle lock table query and unlocking method
Isparta is a tool that generates webp, GIF and apng from PNG and supports the transformation of webp, GIF and apng
Information: 2021 / 9 / 29 10:01 - build completed with 1 error and 0 warnings in 11S 30ms error exception handling
Window analysis function last_ VALUE,FIRST_ VALUE,lag,lead