Zero-copy

"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another or in which unnecessary data copies are avoided. This is frequently used to save CPU cycles and memory bandwidth in many time consuming tasks, such as when transmitting a file at high speed over a network, etc., thus improving the performance of programs (processes) executed by a computer.[1][2][3][4]

Principle

Zero-copy programming techniques can be used when exchanging data within a user space process (i.e. between two or more threads, etc.) and/or between two or more processes (see also producer–consumer problem) and/or when data has to be accessed / copied / moved inside kernel space or between a user space process and kernel space portions of operating systems (OS).

Usually when a user space process has to execute system operations like reading or writing data from/to a device (i.e. a disk, a NIC, etc.) through their high level software interfaces or like moving data from one device to another, etc., it has to perform one or more system calls that are then executed in kernel space by the operating system.

If data has to be copied or moved from source to destination and both are located inside kernel space (i.e. two files, a file and a network card, etc.) then unnecessary data copies, from kernel space to user space and from user space to kernel space, can be avoided by using special (zero-copy) system calls, usually available in most recent versions of popular operating systems.

Zero-copy versions of operating system elements, such as device drivers, file systems, network protocol stacks, etc., greatly increase the performance of certain application programs (that become processes when executed) and more efficiently utilize system resources. Performance is enhanced by allowing the CPU to move on to other tasks while data copies / processing proceed in parallel in another part of the machine. Also, zero-copy operations reduce the number of time-consuming context switches between user space and kernel space. System resources are utilized more efficiently since using a sophisticated CPU to perform extensive data copy operations, which is a relatively simple task, is wasteful if other simpler system components can do the copying.

As an example, reading a file and then sending it over a network the traditional way requires 2 extra data copies (1 to read from kernel to user space + 1 to write from user to kernel space) and 4 context switches per read/write cycle. Those extra data copies use the CPU. Sending that file by using mmap of file data and a cycle of write calls, reduces the context switches to 2 per write call and avoids those previous 2 extra user data copies. Sending the same file via zero copy reduces the context switches to 2 per sendfile call and eliminates all CPU extra data copies (both in user and in kernel space).[1][2][3][4]

Zero-copy protocols are especially important for very high-speed networks in which the capacity of a network link approaches or exceeds the CPU's processing capacity. In such a case the CPU may spend nearly all of its time copying transferred data, and thus becomes a bottleneck which limits the communication rate to below the link's capacity. A rule of thumb used in the industry is that roughly one CPU clock cycle is needed to process one bit of incoming data.

Hardware implementations

An early implementation was IBM OS/360 where a program can instruct the channel subsystem to read blocks of data from one file or device into a buffer and write to another from the same buffer without moving the data.

Techniques for creating zero-copy software include the use of direct memory access (DMA)-based copying and memory-mapping through a memory management unit (MMU). These features require specific hardware support and usually involve particular memory alignment requirements.

A newer approach used by the Heterogeneous System Architecture (HSA) facilitates the passing of pointers between the CPU and the GPU and also other processors. This requires a unified address space for the CPU and the GPU.[5][6]

Program interfaces

Several operating systems support zero-copying of user data and file contents through specific APIs.

Here are listed only a few well known system calls / APIs available in most popular OSs.

Novell NetWare supports a form of zero-copy through Event Control Blocks (ECBs), see NCOPY.

The internal COPY command in some versions of DR-DOS since 1992 initiates this as well when COMMAND.COM detects that the files to be copied are stored on a NetWare file server,[7] otherwise it falls back to normal file copying. The external MOVE command since DR DOS 6.0 (1991) and MS-DOS 6.0 (1993) internally performs a RENAME (causing just the directory entries to be modified in the file system instead of physically copying the file data) when the source and destination are located on the same logical volume.[8]

The Linux kernel supports zero-copy through various system calls, such as:

Some of them are specified in POSIX and thus also present in the BSD kernels or IBM AIX, some are unique to the Linux kernel API.

FreeBSD, NetBSD, OpenBSD, DragonFly BSD, etc. support zero-copy through at least these system calls:

  • sendfile;[17]
  • write,[18] writev [19] + mmap [20] when writing data to a network socket.

MacOS should support zero-copy through the FreeBSD portion of the kernel because it offers the same system calls (and its manual pages are still tagged BSD) such as:

Oracle Solaris supports zero-copy through at least these system calls:

Microsoft Windows supports zero-copy through at least this system call:

Java input streams can support zero-copy through the java.nio.channels.FileChannel's transferTo() method if the underlying operating system also supports zero copy.[28]

RDMA (Remote Direct Memory Access) protocols deeply rely on zero-copy techniques.

See also

References

  1. ^ a b Stancevic, Dragan (2003-01-01). "Zero Copy I: User-Mode Perspective". www.linuxjournal.com. Retrieved 2021-10-14.
  2. ^ a b Bröse, Eduard (2012-01-01). "ZeroCopy: Techniques, Benefits and Pitfalls". CiteSeerX 10.1.1.93.9589. {{cite journal}}: Cite journal requires |journal= (help)
  3. ^ a b Song, Jia; Alves-Foss, Jim (2012-01-01). "Performance Review of Zero Copy Techniques" (PDF). www.uidaho.edu. Retrieved 2021-10-14.
  4. ^ a b Baldwin, John (2020-05-01). "TLS offload in the kernel" (PDF). freebsdfoundation.org. Retrieved 2021-10-14.
  5. ^ "The programmer's guide to the APU galaxy" (PDF).
  6. ^ "AMD Outlines HSA Roadmap: Unified Memory for CPU/GPU". 2012-02-02.
  7. ^ "Caldera OpenDOS Machine Readable Source Kit (M.R.S) 7.01". Caldera, Inc. 1997-05-01. Archived from the original on 2021-08-07. Retrieved 2022-01-02. [1] (NB. Actually implemented since DR DOS "Panther" on 1992-06-22, see COMCPY.C/DOSIF.ASM in the COMMAND.COM sources of OpenDOS 7.01.)
  8. ^ Paul, Matthias R. (1997-07-30) [1994-05-01]. "II.4. Undokumentierte Eigenschaften externer Kommandos: MOVE.EXE". NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. Release 157 (in German) (3 ed.). Archived from the original on 2017-09-10. Retrieved 2014-08-06. {{cite book}}: |work= ignored (help) (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.) [2]
  9. ^ "sendfile(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  10. ^ "splice(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  11. ^ "tee(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  12. ^ "vmsplice(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  13. ^ "process_vm_readv(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  14. ^ "process_vm_writev(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  15. ^ "copy_file_range(2) - Linux manual page". man7.org. 2021-03-22. Retrieved 2021-10-13.
  16. ^ "Linux PACKET_MMAP documentation". kernel.org.
  17. ^ "sendfile(2) - FreeBSD manual pages". www.freebsd.org. 2020-04-30. Retrieved 2021-10-13.
  18. ^ "write(2) - FreeBSD manual pages". www.freebsd.org. 2020-04-30. Retrieved 2021-10-13.
  19. ^ "writev(2) - FreeBSD manual pages". www.freebsd.org. 2020-04-30. Retrieved 2021-10-13.
  20. ^ "mmap(2) - FreeBSD manual pages". www.freebsd.org. 2020-04-30. Retrieved 2021-10-13.
  21. ^ "sendfile(2) - Mac OS X Manual Page". developer.apple.com. 2006-03-31. Retrieved 2021-10-13.
  22. ^ "sendfile(3C) - Solaris manual pages". docs.oracle.com. 2021-08-13. Retrieved 2021-10-13.
  23. ^ "sendfilev(3C) - Solaris manual pages". docs.oracle.com. 2021-08-13. Retrieved 2021-10-13.
  24. ^ "write(2) - Solaris manual pages". docs.oracle.com. 2021-08-13. Retrieved 2021-10-13.
  25. ^ "writev(2) - Solaris manual pages". docs.oracle.com. 2021-08-13. Retrieved 2021-10-13.
  26. ^ "mmap(2) - Solaris manual pages". docs.oracle.com. 2021-08-13. Retrieved 2021-10-13.
  27. ^ "TransmitFile function (Win32)". docs.microsoft.com. 2021-05-10. Retrieved 2021-10-13.
  28. ^ Palaniappan, Sathish K.; Nagaraja, Pramod B. (2008-09-02). "Java zero-copy". developer.ibm.com. Retrieved 2021-10-13.

Read other articles:

У этого термина существуют и другие значения, см. Зоофилия. Зоофилия Картина Эдуарда-Анри Авриля МКБ-10 F65.8 МКБ-9 302.1 МКБ-9-КМ 302.1[1][2]  Медиафайлы на Викискладе Зоофили́я (от греч. ζῷον «животное» + φιλία «дружба; любовь») или скотоло́жество, скотоло́жство — п

← 2002 •  • 2010 → Elecciones municipales de Huancayo de 2006Alcalde provincial de Huancayo13 regidores Fecha 19 de noviembre de 2006 Tipo Municipal Período 2007-2010 Demografía electoral Hab. registrados 307 733 Votantes 262 786 Participación    85.394 %  1.5 % Votos válidos 223 818 Votos en blanco 14 058 Votos nulos 24 910 Resultados Freddy Arana – Junín Sostenible Votos 37 799...

Rico Lewis Informasi pribadiNama lengkap Rico Mark Lewis[1]Tanggal lahir 21 November 2004 (umur 18)[2]Tempat lahir Manchester, InggrisTinggi 169 cm (5 ft 7 in)[2]Posisi bermain Bek kananInformasi klubKlub saat ini Manchester CityNomor 82Karier junior0000–2022 Manchester CityKarier senior*Tahun Tim Tampil (Gol)2022– Manchester City 6 (0)Tim nasional‡2019–2020 Inggris U-16 4 (0)2021– Inggris U-18 7 (1)2021– Inggris U-19 3 (0) * Penampilan ...

COMMD4 المعرفات الأسماء المستعارة COMMD4, COMM domain containing 4 معرفات خارجية الوراثة المندلية البشرية عبر الإنترنت 616701 MGI: MGI:1913449 HomoloGene: 9865 GeneCards: 54939 علم الوجود الجيني الوظيفة الجزيئية • ‏GO:0001948، ‏GO:0016582 ربط بروتيني المكونات الخلوية • سيتوبلازم• نواة العمليات الحيوية • نسخ الدنا• ‏GO:...

Template:Attached KML/Park Drive (parkway)KML is from Wikidata Park DriveMap with Park Drive highlighted in red.Maintained byDepartment of Conservation and RecreationLength1.1 mi (1.8 km)[1]LocationEmerald Necklace, Boston, MassachusettsEast endBoylston Street in Fenway–KenmoreMajorjunctionsRiverway / Fenway in Fenway–KenmoreWest end Route 2 in Fenway–KenmoreOtherDesignerFrederick Law Olmsted Park Drive is a mostly one-way, two-lane parkway in the Fenway...

Artikel ini membutuhkan rujukan tambahan agar kualitasnya dapat dipastikan. Mohon bantu kami mengembangkan artikel ini dengan cara menambahkan rujukan ke sumber tepercaya. Pernyataan tak bersumber bisa saja dipertentangkan dan dihapus.Cari sumber: EvoBus – berita · surat kabar · buku · cendekiawan · JSTOR (Agustus 2009) EvoBus GmbHJenisGmbHIndustriOtomotifDidirikan23 Februari 1995KantorpusatNeu-Ulm, JermanTokohkunciHartmut SchickProdukBusKaryawan17.899...

Coup d'état attempt in Austria in 1934 Not to be confused with 20 July plot. 1934 July Putsch (Austria)Part of the Interwar PeriodPolice car at Ballhausplatz outside Chancellery building, 25 July 1934Date25–30 July 1934LocationVienna, AustriaResult Austrofascist victory Nazi coup d'etat failed Fatherland Front remains in power Chancellor Engelbert Dollfuss is killedBelligerents Schutzstaffel (SS) SS Standarte 89 Austrian Nazi Party supporters Austrian LegionSupported by: Nazi Germany ...

MartyPoster filmPoster rilis teatrikalSutradara Delbert Mann ProduserHarold HechtBurt LancasterDitulis oleh Paddy Chayefsky SkenarioPaddy ChayefskyBerdasarkanMartydrama televisi tahun 1953oleh Paddy ChayefskyPemeranErnest BorgnineBetsy BlairJoe MantellFrank SuttonKaren SteeleJerry ParisEsther MinciottiAugusta CiolliPenata musikRoy WebbSinematograferJoseph LaShellePenyuntingAlan Crosland Jr.PerusahaanproduksiHecht-Lancaster ProductionsDistributorUnited ArtistsTanggal rilis 11 April 1955&...

A tradução deste artigo está abaixo da qualidade média aceitável. Talvez tenha sido feita por um computador ou alguém que não conhece bem o português ou a língua original. Caso queira colaborar com a Wikipédia, consulte a versão anglófona e melhore este verbete conforme o guia de tradução. (Dezembro de 2022) Ricky Simon Informações Nascimento 31 de agosto de 1992 (31 anos)Vancouver, Washington, Estados Unidos Nacionalidade norte-americano Altura 1,68 m Peso 61 k...

Belgian cyclist Not to be confused with Belgian businessman Julien De Wilde. Julie De Wilde2022 Tour de France FemmesPersonal informationFull nameJulie De WildeBorn (2002-12-08) December 8, 2002 (age 20)Ghent, BelgiumHeight1.8 m (5 ft 11 in)Weight64.5 kg (142 lb)Team informationCurrent teamFenix–Deceuninck (road) IKO–Crelan (cyclo-cross)DisciplineRoad cyclingCyclo-crossRoleRiderRider typeSprinterProfessional teams2019–2020Doltcini–NM Transp...

Quarter of Berlin in GermanyFalkenberg Quarter of Berlin View of DorfstraßeLocation of Falkenberg in Lichtenberg district and Berlin Falkenberg Show map of GermanyFalkenberg Show map of BerlinCoordinates: 52°30′21″N 13°31′09″E / 52.50583°N 13.51917°E / 52.50583; 13.51917CountryGermanyStateBerlinCityBerlin BoroughLichtenberg Founded1370Area • Total3.06 km2 (1.18 sq mi)Elevation60 m (200 ft)Population (2020-12-31) ...

American college basketball season 1975–76 Centenary Gentlemen men's basketballConferenceIndependentRankingAPNo. 19Record22–5Head coachLarry Little (5th season)Home arenaGold DomeSeasons← 1974–751976–77 → 1975–76 NCAA Division I men's basketball independents standings vte Conf Overall Team W   L   PCT W   L   PCT No. 4 Rutgers –   – 31 – 2   .939 No. 3 UNLV –   – 29 – 2   .935 No...

Reverse bungee ride SlingShotView of an active SlingShot ride from the Gemini Midway at Cedar Point.Cedar PointAreaGemini MidwayStatusClosedSoft opening dateJune 2014Opening dateJuly 2, 2014 Kings IslandAreaOktoberfestStatusRemovedOpening date2002Closing date2022 CarowindsAreaCarousel ParkStatusOperatingOpening date2015 Canada's WonderlandAreaAction ZoneStatusOperatingOpening date2015 Ride statisticsManufacturerFuntimeModelSling ShotSpeed62 mph (100 km/h)Vehicles1Riders per vehicle2...

Paloma Faith discographyPaloma Faith performing in 2013Studio albums6Music videos36EPs1Singles40 English singer and songwriter Paloma Faith has released six studio albums, 40 singles and 36 music videos. Faith made her debut in September 2009 with the studio album Do You Want the Truth or Something Beautiful?, which peaked at number nine in the United Kingdom and was later certified double-platinum. Its first two singles, Stone Cold Sober and New York, both peaked within the top twenty in the...

East-west thoroughfare in Los Angeles, California, United States This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Santa Monica Boulevard – news · newspapers · books · scholar · JSTOR (January 2017) (Learn how and when to remove this template message) Santa Monica BoulevardSanta Monica Boulevard in Century Cit...

Aktuelles Kennzeichen aus M = Manzini Zweizeiliges Kennzeichen aus H = HhohhoDie KfZ-Kennzeichen von Eswatini sind in ihrer Größe und der Gestaltung an die südafrikanischen Kfz-Kennzeichen angelehnt. Das heutige Format wird seit 2010 verwendet. Aktuell Das 2010 eingeführte Design ähnelt stark dem Design des südafrikanischen Kennzeichens. Dies wurde eingeführt, um den Diebstahl von Fahrzeugen aus Eswatini in Südafrika zu erschweren.[1] Die Beschriftung folgt dem Muster XSD###XC...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada April 2016. Hubungan masyarakat dalam dunia maya (atau Humas dunia maya; bahasa Inggris: Cyber Public Relation, terkenal dengan singkatan Cyber PR) adalah hubungan masyarakat (public relation atau PR) yang dilakukan dengan sarana media elektronik internet dalam ...

Power station in Uganda Not to be confused with Nyamwamba II Hydroelectric Power Station. Dam in Kilembe, Kasese DistrictNyamwamba I Hydroelectric Power StationMap of Uganda showing the location of Nyamwamba I HPPCountryUgandaLocationKilembe, Kasese DistrictCoordinates00°12′45″N 30°00′20″E / 0.21250°N 30.00556°E / 0.21250; 30.00556PurposePowerStatusOperationalConstruction costUS$24 millionOwner(s)Serengeti Energy LimitedOperator(s)Serengeti Energy Limi...

Lighthouse in Greece LighthousePatras Lighthouse(replica) Patras Lighthouse, 2010LocationAgios Andreas, Patras, Municipality of Patras, Greece Coordinates38°14′42″N 21°43′32″E / 38.245078°N 21.725590°E / 38.245078; 21.725590TowerConstructed1880 (original)Constructionstone towerHeight13 metres (43 ft)Shapecylindrical tower with balcony and lantern rising from 1-story keeper's house[2]Markingsunpainted white stone towerLightFirst lit1999 (rep...

Bilateral relationsCape Verde–Portugal relations Cape Verde Portugal Cape Verde–Portugal relations are the diplomatic relations between the Republic of Cabo Verde and the Portuguese Republic. Both nations are members of the Community of Portuguese Language Countries and the United Nations. History Main article: History of Cape Verde Nossa Senhora do Rosário church in Cidade Velha - the oldest surviving building in Cape Verde The islands of Cape Verde were discovered between 1460 and 1462...