当前位置:网站首页>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
边栏推荐
- Aicoco AI frontier promotion (4.23)
- TIA博途中基於高速計數器觸發中斷OB40實現定點加工動作的具體方法示例
- Dolphin scheduler configuring dataX pit records
- 面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ?
- Opening: identification of double pointer instrument panel
- 聯想拯救者Y9000X 2020
- Launcher hides app icons that do not need to be displayed
- 面试官给我挖坑:URI中的 “//” 有什么用?
- Plato farm, a top-level metauniverse game, has made frequent positive moves recently
- Common types and basic usage of input plug-in of logstash data processing service
猜你喜欢

Lenovo Savior y9000x 2020

交叉碳市场和 Web3 以实现再生变革

AI21 Labs | Standing on the Shoulders of Giant Frozen Language Models(站在巨大的冷冻语言模型的肩膀上)

Dolphin scheduler scheduling spark task stepping record

The interviewer dug a hole for me: how many concurrent TCP connections can a single server have?

Isparta is a tool that generates webp, GIF and apng from PNG and supports the transformation of webp, GIF and apng

Interface idempotency problem

On the bug of JS regular test method

SAP UI5 应用开发教程之七十二 - SAP UI5 页面路由的动画效果设置试读版

The query did not generate a result set exception resolution when the dolphin scheduler schedules the SQL task to create a table
随机推荐
Oracle view related
Lenovo Saver y9000x 2020
Dolphin scheduler configuring dataX pit records
Detailed explanation of constraints of Oracle table
NPM err code 500 solution
Personal learning related
Handling of high usage of Oracle undo
10g database cannot be started when using large memory host
聯想拯救者Y9000X 2020
Isparta is a tool that generates webp, GIF and apng from PNG and supports the transformation of webp, GIF and apng
SAP UI5 应用开发教程之七十二 - SAP UI5 页面路由的动画效果设置试读版
JS compares different elements in two arrays
innobackupex增量备份
kettle庖丁解牛第16篇之输入组件周边讲解
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
Longitude and latitude position of provincial capitals in China
PG library to view the distribution keys of a table in a certain mode
[point cloud series] learning representations and generative models for 3D point clouds
Logstash数据处理服务的输入插件Input常见类型以及基本使用
Special window function rank, deny_ rank, row_ number