A Framework for Automatic Generation of Fundamental Memory Operations∗

Total Page:16

File Type:pdf, Size:1020Kb

A Framework for Automatic Generation of Fundamental Memory Operations∗ automemcpy: A Framework for Automatic Generation of Fundamental Memory Operations∗ Guillaume Chatelet Chris Kennelly Sam (Likun) Xi Google Research Google Google France USA USA [email protected] [email protected] [email protected] Ondrej Sykora Clément Courbet Xinliang David Li Google Research Google Research Google France France USA [email protected] [email protected] [email protected] Bruno De Backer Google Research France [email protected] Abstract computing enterprises in the world. This work increased the Memory manipulation primitives (memcpy, memset, memcmp) performance of the fleet by 1%. are used by virtually every application, from high perfor- CCS Concepts · Software and its engineering → Soft- mance computing to user interfaces. They often consume a ware development techniques; · General and reference significant portion of CPU cycles. Because they are so ubiq- → Measurement; Performance; Empirical studies; Met- uitous and critical, they are provided by language runtimes rics. and in particular by libc, the C standard library. These im- plementations are heavily optimized, typically written in Keywords memory functions, C standard library hand-tuned assembly for each target architecture. In this article, we propose a principled alternative to hand- ACM Reference Format: tuning these functions: (1) we profile the calls to these func- Guillaume Chatelet, Chris Kennelly, Sam (Likun) Xi, Ondrej Sykora, tions in their production environment and use this data to Clément Courbet, Xinliang David Li, and Bruno De Backer. 2021. drive the important high-level algorithmic decisions, (2) we automemcpy: A Framework for Automatic Generation of Funda- use a high-level language for the implementation, delegate mental Memory Operations. In Proceedings of the 2021 ACM SIG- PLAN International Symposium on Memory Management (ISMM ’21), the job of tuning the generated code to the compiler, and (3) June 22, 2021, Virtual, Canada. ACM, New York, NY, USA, 13 pages. we use constraint programming and automatic benchmarks https://doi.org/10.1145/3459898.3463904 to select the optimal high-level structure of the functions. We compile our memfunctions implementations using the same compiler toolchain that we use for application 1 Introduction code, which allows leveraging the compiler further by al- Interacting with memory is an essential part of software lowing whole-program optimization. We have evaluated our development. At the lowest level the two fundamental mem- approach by applying it to the fleet of one of the largest ory operations are load and store, but developers frequently use higher level memory primitives such as initialization, ∗Our memory function implementations [14], benchmarking methodol- ogy [11, 13] and raw measurements [10] have been open sourced. comparison, and copy. These operations are at the base of nearly all libraries,1 language run-times,2 and even program- 3 Permission to make digital or hard copies of part or all of this work for ming languages constructs. They may be customized for personal or classroom use is granted without fee provided that copies are some particular contextsÐsuch as for kernel use or embed- not made or distributed for profit or commercial advantage and that copies ded developmentÐbut the vast majority of software depends bearThis this work notice is licensed and the under full citation a Creative on the Commons first page. Attribution Copyrights 4.0 Interna- for third- partytional components License. of this work must be honored. For all other uses, contact the owner/author(s). 1e.g., std::string and std::vector in the C++ Standard Template Library. ISMM ’21, June 22, 2021, Virtual, Canada 2Garbage collectors move memory to reduce fragmentation, reflection APIs © 2021 Copyright held by the owner/author(s). rely on run-time type identifier comparison. ACM ISBN 978-1-4503-8448-3/21/06. 3In some C implementations, passing a large struct by value inserts a call https://doi.org/10.1145/3459898.3463904 to libc’s memcpy. 39 ISMM ’21, June 22, 2021, Virtual, Canada G. Chatelet, C. Kennelly, L. S. Xi, O. Sykora, C. Courbet, X. D. Li, and B. De Backer Table 1. Overview of memcpy source code language for vari- Table 2. Binary size of glibc 2.31 memcpy implementations ous architectures and libc implementations. for x86-64. Name Size (bytes) bionic glibc freebsd dietlibc uClibc eglibc klibc musl __memcpy_avx512_no_vzeroupper 1855 aarch64 asm asm asm - - - - asm __memcpy_avx512_unaligned_erms 1248 arm asm asm asm - - asm - asm __memcpy_avx_unaligned_erms 984 i386 asm asm asm asm C asm - asm __memcpy_sse2_unaligned_erms 765 x86-64 asm asm asm asm asm asm - asm __memcpy_sse3 10695 alpha - asm - - - asm - - __memcpy_sse3_back 10966 generic ------CC ia64 - asm - - asm asm - - mips - asm asm - - - - - powerpc - asm asm - C - - - • it enables quick updatesÐthis is especially important s390 - asm - - - asm - - sh - asm - - asm asm - - for maintenance and security reasons, sparc32 - asm - asm asm asm - - • to the developer, it accelerates the compilation process sparc64 - asm - asm - asm - - by reducing link time. Shared libraries also come with costs: on their implementations in the C standard library: memset, • Symbols from shared libraries can’t be resolved at com- memcmp and memcpy4. pile time and they need extra run-time infrastructure. In the rest of this paper, we will focus on the optimization Modern Linux systems and x86-64 in particular imple- of memcpy as the hottest of the three functions, but the same ment shared libraries using Position Independent Code approach can be applied to the other two. (PIC) [5ś7]. PIC avoids costly relocation of function As a reminder, memcpy is defined in ğ7.24.2.1 of the C addresses at load time by using an extra indirect call standard [21] like so: The memcpy function copies n characters through the Procedure Linkage Table (PLT). This indi- from the object pointed to by s2 into the object pointed to by rect call hurts performance and increases instruction s1. If copying takes place between objects that overlap, the Translation Lookaside Buffer (iTLB) misses. behavior is undefined. • Functions imported from shared libraries are not vis- 2 Overview of Current Implementations ible to the linker. This prevents optimizations such as inlining and Feedback-Directed Optimization (FDO). 2.1 Pervasive Use of Assembly We discuss FDO in more detail in Section 2.4. Memory primitives have been part of the C standard library for at least three decades. They have seen persistent efforts In Google data centers, applications are statically linked and to exploit the capabilities (and work around the quirks) of their size is typically in the hundreds of megabytes. Statically each architecture as it evolved over time. Developers, who linking the memory primitives only marginally increases the were typically well-versed in the subtleties of their target binary size and overcomes the aforementioned problems. micro-architecture, would choose assembly to obtain the maximal amount of control on the resulting generated code. 2.3 Run-Time Dispatch As a result, out of the eight main publicly available libc im- As CPUs and Instruction Set Architectures (ISAs) evolve, new plementations (see Table 1), all but one use assembly to instructions become available and performance of older in- implement memcpy. As shown in Table 2, glibc5 alone has six structions may improve or degrade. Unless a libc is built for x86-64 versions of memcpy to exploit different instruction set a specific CPU model, it must accommodate the older models extensions such as SSE2, SSE3, AVX, and AVX512. but it should also provide an optimized versions for newer CPU models. To this end, Linux libraries use a run-time dis- 2.2 Dynamic Loading and Relocation patching technique on top of PLT called IFUNC [26] that is Standard C libraries are usually provided as shared libraries, commonly used by glibc. On the first call to an IFUNC, the which brings a number of advantages: indirect addressÐstored in the Global Offset Table (GOT)Ð • it avoids code duplicationÐsaving disk space and mem- points to a custom resolver function that determines the best ory, implementation for the host machine. The resolver then over- rides its own GOT entry so that subsequent calls access the 4memmove is not considered in this paper as: (1) it requires additional logic and (2) in our experience, its use is anecdotal compared to memcpy, memcmp selected function. After the setup phase, an IFUNC has the and memset. same indirect call costs and limitations as a function from a 5The GNU C library. shared library, even if it is linked statically. 40 automemcpy: A Framework for Automatic Generation of Fundamental Memory Operations ISMM ’21, June 22, 2021, Virtual, Canada 2.4 Feedback-Directed Optimization subsystem that can attach to a running process and collect The most significant optimizations in recent years came from profiling data without a need to recompile or restart theap- the mainstream adoption of Feedback-Directed Optimiza- plication. Among other features, it allows sampling register tion6 (FDO) with global efficiency improvements typically values at certain points during the execution of the program. over 10% [15]. FDO relies on a measured execution profile to In our case, we set it up to sample the RDX register right af- make informed compilation decisions7 based on how the ap- ter a call instruction. Under the System V x86-64 ABI [25], plication actually executes the code. Because memory primi- this register contains the size argument of memcpy. Since tives are so pervasive among all applications, they are espe- memcpy is statically linked, its address in the binary is known cially well covered by sampling profilers8 and could greatly at compile time, so we can easily filter samples belonging to benefit from FDO. memcpy and gather them into a histogram. However, FDO can only be applied to the parts of the 3.2 Performance Definition application for which source code is available to the com- piler/linker. In particular, it can’t be applied to dynamically There are many dimensions to consider when designing linked functions and IFUNCs.
Recommended publications
  • FUJITSU AI Zinrai Deep Learning System 200M/210H Software License Terms
    FUJITSU AI Zinrai Deep Learning System 200M/210H Software License Terms Copyright 2021 FUJITSU LIMITED P3KD-1962-01EN 1. NVIDIA Product License Terms This product uses the following NVIDIA products. Name Version Tesla Driver for Linux x64 460.73.01 cuDNN 8.2.2 These NVIDIA products can be downloaded from the NVIDIA home page. http://www.nvidia.com/page/home.html Regarding the terms and conditions of the license for Tesla Driver for Linux x64 460.73.01, see "END USER LICENSE AGREEMENTS (EULA)" in the Appendix. Regarding the terms and conditions of the license for cuDNN 8.2.2, see "NVIDIA SOFTWARE LICENSE AGREEMENT" in the Appendix. 2. NGC Software This product contains the open source software ("OSS") as described in this document. The license terms for each OSS are as described below. • PyTorch 1.9.0 From PyTorch: Copyright (c) 2016- Facebook, Inc (Adam Paszke) Copyright (c) 2014- Facebook, Inc (Soumith Chintala) Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert) Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu) Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu) Copyright (c) 2011-2013 NYU (Clement Farabet) Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston) Copyright (c) 2006 Idiap Research Institute (Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz) From Caffe2: Copyright (c) 2016-present, Facebook Inc. All rights reserved. All contributions by Facebook: Copyright (c) 2016 Facebook Inc. All contributions by Google: Copyright (c) 2015 Google Inc. All rights reserved. All contributions by Yangqing Jia: Copyright (c) 2015 Yangqing Jia All rights reserved.
    [Show full text]
  • Meeting Agenda 4:30 – 6:00 PM, Wednesday, Nov 2Nd, 2016 Lyons Town Hall
    Meeting Agenda 4:30 – 6:00 PM, Wednesday, Nov 2nd, 2016 Lyons Town Hall I. Roll Call, Agenda, Minutes • Amendments to Agenda • Approve Minutes from Oct 19th • UEB Officers and Member Lead Areas • Upcoming Meetings - Nov 12, 2016 9 AM or 1 PM - Lyons Boards and Commissions Training - Lyons ​ ​ ​ Nov 9. 8 AM - Northern Water Fall Water Users Meeting - Longmont, Best Western 1850 Industrial Cir. Dec 2nd - CAMU Fall Meeting - Fairfield & Woods in Denver, CO II. Audience Business III. Liaison Updates • Board of Trustees Update - MEAN meeting Report • Staff, Engineering Update - Honeywell Savings Gaurantee IV. Continued Business ● Town Utility Account tracking V. New Business ● Water/Wastewater Rate and CIP Study Presentation RG & Assoc. VI. Parking Lot • 2017 Utility FUnd Budget, Pipe Water rates for 2017 Budget, • Reserve/Rate Stabilization Funds • Wastewater Pretreatment Policy • LRAP INF 2.2.1 • Municipal Code Corrections UEB Meeting Minutes, 19 Oct 2016 Meeting Time and Location: Began at 4:30 at Town Hall. ​ Attendance:, Aaron Caplan, Lee Hall, Coco Gordon, John Cowdry, Chuck Keim, Dan Reitz, Jay Stott ​ Staff: Kyle Miller Liaisons: Guests: ​ ​ Amendments to Agenda: Welcomed Jay Stott as the newest member of the UEB. ​ Previous Minutes: . Reviewed and modified Oct 5th Minutes under Water Wastewater CIP to add “Areas ​ where there is no looping of the water mains need looping. It was emphasized to try and coordinate getting water, and wastewater done first in areas that need paving.” Aaron had not followed up with Parks and ​ Rec to find out if they were budgeting for water usage. He would do so. Then approved minutes.
    [Show full text]
  • Embedded Linux Systems with the Yocto Project™
    OPEN SOURCE SOFTWARE DEVELOPMENT SERIES Embedded Linux Systems with the Yocto Project" FREE SAMPLE CHAPTER SHARE WITH OTHERS �f, � � � � Embedded Linux Systems with the Yocto ProjectTM This page intentionally left blank Embedded Linux Systems with the Yocto ProjectTM Rudolf J. Streif Boston • Columbus • Indianapolis • New York • San Francisco • Amsterdam • Cape Town Dubai • London • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi • Mexico City São Paulo • Sidney • Hong Kong • Seoul • Singapore • Taipei • Tokyo Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding interests), please contact our corporate sales depart- ment at [email protected] or (800) 382-3419. For government sales inquiries, please contact [email protected]. For questions about sales outside the U.S., please contact [email protected]. Visit us on the Web: informit.com Cataloging-in-Publication Data is on file with the Library of Congress.
    [Show full text]
  • Cp 99, Other Filing/Pleading, 11/12/2014
    BINGHAM Catherine Wang Brett P. Ferenchak catherine. wang@ bingham. com [email protected] November 11, 2014 Via Overnight Courier and E-Mail Oregon Public Utility Commission Attn: Filing Center 550 Capitol Street, N.E. Suite 215 Salem, OR 97301-2551 [email protected] Re: Business Telecom, LLC d/b/a EarthLink Business I Notification of Conversion and Associated Name Change Dear Sir or Madam: Business Telecom, LLC d/b/a EarthLink Business I (formerly known as Business Telecom, Inc. d/b/a EarthLink Business III) (the "Company") hereby notifies the Commission (1) that the Company converted from a North Carolina corporation to a North Carolina limited liability company' and (2) of the associated name change to "Business Telecom, LLC d/b/a EarthLink Business 1." The Company requests that the Commission update its records, including the Company's Certificate,2 to reflect the conversion and associate name change and, to the extent necessary, approve these changes. Attached hereto are the Company's conversion documents and updated authorization to transact business in Oregon and trade name registration. Beijing Boston Frankfurt Hartford Hong Kong London los Angeles New York Orange County San Francisco Santa Monica Silicon Valley Tokyo Washington The conversion of the Company to a limited liability company was merely a change in its corporate form -the conversion was accomplished through the filing of Articles of Bingham McCutchen LLP Conversion in North Carolina and did not entail any merger or other transactions interrupting 2020 K Street NW Washington, DC the existence of the Company. 20006-1806 2 The Company is authorized to provide interexchange telecommunications services pursuant to Order No.
    [Show full text]
  • Smashing the Stack Protector for Fun and Profit
    Smashing the Stack Protector for Fun and Profit Bruno Bierbaumer1 ( ), Julian Kirsch1, Thomas Kittel1, Aurélien Francillon2, and Apostolis Zarras3 1 Technical University of Munich, Munich, Germany [email protected] 2 EURECOM, Sophia Antipolis, France 3 Maastricht University, Maastricht, Netherlands Abstract. Software exploitation has been proven to be a lucrative busi- ness for cybercriminals. Unfortunately, protecting software against attacks is a long-lasting endeavor that is still under active research. However, certain software-hardening schemes are already incorporated into current compilers and are actively used to make software exploitation a compli- cated procedure for the adversaries. Stack canaries are such a protection mechanism. Stack canaries aim to prevent control flow hijack by detecting corruption of a specific value on the program’s stack. Careful design and implementation of this conceptually straightforward mechanism is crucial to defeat stack-based control flow detours. In this paper, we examine 17 different stack canary implementations across multiple versions of the most popular Operating Systems running on various architectures. We systematically compare critical implementation details and introduce one new generic attack vector which allows bypassing stack canaries on current Linux systems running up-to-date multi-threaded software altogether. We release an open-source framework (CookieCrumbler) that identifies the characteristics of stack canaries on any platform it is compiled on and we propose mitigation techniques against stack-based attacks. Although stack canaries may appear obsolete, we show that when they are used correctly, they can prevent intrusions which even the more sophisticated solutions may potentially fail to block. 1 Introduction Buffer overflow vulnerabilities are as old as the Internet itself.
    [Show full text]
  • Operating Systems and Applications for Embedded Systems >>> Toolchains
    >>> Operating Systems And Applications For Embedded Systems >>> Toolchains Name: Mariusz Naumowicz Date: 31 sierpnia 2018 [~]$ _ [1/19] >>> Plan 1. Toolchain Toolchain Main component of GNU toolchain C library Finding a toolchain 2. crosstool-NG crosstool-NG Installing Anatomy of a toolchain Information about cross-compiler Configruation Most interesting features Sysroot Other tools POSIX functions AP [~]$ _ [2/19] >>> Toolchain A toolchain is the set of tools that compiles source code into executables that can run on your target device, and includes a compiler, a linker, and run-time libraries. [1. Toolchain]$ _ [3/19] >>> Main component of GNU toolchain * Binutils: A set of binary utilities including the assembler, and the linker, ld. It is available at http://www.gnu.org/software/binutils/. * GNU Compiler Collection (GCC): These are the compilers for C and other languages which, depending on the version of GCC, include C++, Objective-C, Objective-C++, Java, Fortran, Ada, and Go. They all use a common back-end which produces assembler code which is fed to the GNU assembler. It is available at http://gcc.gnu.org/. * C library: A standardized API based on the POSIX specification which is the principle interface to the operating system kernel from applications. There are several C libraries to consider, see the following section. [1. Toolchain]$ _ [4/19] >>> C library * glibc: Available at http://www.gnu.org/software/libc. It is the standard GNU C library. It is big and, until recently, not very configurable, but it is the most complete implementation of the POSIX API. * eglibc: Available at http://www.eglibc.org/home.
    [Show full text]
  • Rmox: a Raw-Metal Occam Experiment
    Communicating Process Architectures – 2003 269 Jan F. Broenink and Gerald H. Hilderink (Eds.) IOS Press, 2003 RMoX: A Raw-Metal occam Experiment Fred BARNES†, Christian JACOBSEN† and Brian VINTER‡ † Computing Laboratory, University of Kent, Canterbury, Kent, CT2 7NF, England. {frmb2,clj3}@kent.ac.uk ‡ Department of Mathematics and Computer Science, University of Southern Denmark, Odense, Denmark. [email protected] Abstract. Operating-systems are the core software component of many modern com- puter systems, ranging from small specialised embedded systems through to large distributed operating-systems. This paper presents RMoX: a highly concurrent CSP- based operating-system written in occam. The motivation for this stems from the overwhelming need for reliable, secure and scalable operating-systems. The major- ity of operating-systems are written in C, a language that easily offers the level of flexibility required (for example, interfacing with assembly routines). C compilers, however, provide little or no mechanism to guard against race-hazard and aliasing er- rors, that can lead to catastrophic run-time failure (as well as to more subtle errors, such as security loop-holes). The RMoX operating-system presents a novel approach to operating-system design (although this is not the first CSP-based operating-system). Concurrency is utilised at all levels, resulting in a system design that is well defined, easily understood and scalable. The implementation, using the KRoC extended oc- cam, provides guarantees of freedom from race-hazard and aliasing errors, and makes extensive use of the recently added support for dynamic process creation and channel mobility. Whilst targeted at mainstream computing, the ideas and methods presented are equally applicable for small-scale embedded systems — where advantage can be made of the lightweight nature of RMoX (providing fast interrupt responses, for ex- ample).
    [Show full text]
  • Betrfs: a Right-Optimized Write-Optimized File System
    BetrFS: A Right-Optimized Write-Optimized File System William Jannen, Jun Yuan, Yang Zhan, Amogh Akshintala, Stony Brook University; John Esmet, Tokutek Inc.; Yizheng Jiao, Ankur Mittal, Prashant Pandey, and Phaneendra Reddy, Stony Brook University; Leif Walsh, Tokutek Inc.; Michael Bender, Stony Brook University; Martin Farach-Colton, Rutgers University; Rob Johnson, Stony Brook University; Bradley C. Kuszmaul, Massachusetts Institute of Technology; Donald E. Porter, Stony Brook University https://www.usenix.org/conference/fast15/technical-sessions/presentation/jannen This paper is included in the Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST ’15). February 16–19, 2015 • Santa Clara, CA, USA ISBN 978-1-931971-201 Open access to the Proceedings of the 13th USENIX Conference on File and Storage Technologies is sponsored by USENIX BetrFS: A Right-Optimized Write-Optimized File System William Jannen, Jun Yuan, Yang Zhan, Amogh Akshintala, John Esmet∗, Yizheng Jiao, Ankur Mittal, Prashant Pandey, Phaneendra Reddy, Leif Walsh∗, Michael Bender, Martin Farach-Colton†, Rob Johnson, Bradley C. Kuszmaul‡, and Donald E. Porter Stony Brook University, ∗Tokutek Inc., †Rutgers University, and ‡Massachusetts Institute of Technology Abstract (microwrites). Examples include email delivery, creat- The Bε -tree File System, or BetrFS, (pronounced ing lock files for an editing application, making small “better eff ess”) is the first in-kernel file system to use a updates to a large file, or updating a file’s atime. The un- write-optimized index. Write optimized indexes (WOIs) derlying problem is that many standard data structures in are promising building blocks for storage systems be- the file-system designer’s toolbox optimize for one case cause of their potential to implement both microwrites at the expense of another.
    [Show full text]
  • Porting Musl to the M3 Microkernel TU Dresden
    Porting Musl to the M3 microkernel TU Dresden Sherif Abdalazim, Nils Asmussen May 8, 2018 Contents 1 Abstract 2 2 Introduction 3 2.1 Background.............................. 3 2.2 M3................................... 4 3 Picking a C library 5 3.1 C libraries design factors . 5 3.2 Alternative C libraries . 5 4 Porting Musl 7 4.1 M3andMuslbuildsystems ..................... 7 4.1.1 Scons ............................. 7 4.1.2 GNUAutotools........................ 7 4.1.3 Integrating Autotools with Scons . 8 4.2 Repositoryconfiguration. 8 4.3 Compilation.............................. 8 4.4 Testing ................................ 9 4.4.1 Syscalls ............................ 9 5 Evaluation 10 5.1 PortingBusyboxcoreutils . 10 6 Conclusion 12 1 Chapter 1 Abstract Today’s processing workloads require the usage of heterogeneous multiproces- sors to utilize the benefits of specialized processors and accelerators. This has, in turn, motivated new Operating System (OS) designs to manage these het- erogeneous processors and accelerators systematically. M3 [9] is an OS following the microkernel approach. M3 uses a hardware/- software co-design to exploit the heterogeneous systems in a seamless and effi- cient form. It achieves that by abstracting the heterogeneity of the cores via a Data Transfer Unit (DTU). The DTU abstracts the heterogeneity of the cores and accelerators so that they can communicate systematically. I have been working to enhance the programming environment in M3 by porting a C library to M3. I have evaluated different C library implementations like the GNU C Library (glibc), Musl, and uClibc. I decided to port Musl as it has a relatively small code base with fewer configurations. It is simpler to port, and it started to gain more ground in embedded systems which are also a perfect match for M3 applications.
    [Show full text]
  • MC-1200 Series Linux Software User's Manual
    MC-1200 Series Linux Software User’s Manual Version 1.0, November 2020 www.moxa.com/product © 2020 Moxa Inc. All rights reserved. MC-1200 Series Linux Software User’s Manual The software described in this manual is furnished under a license agreement and may be used only in accordance with the terms of that agreement. Copyright Notice © 2020 Moxa Inc. All rights reserved. Trademarks The MOXA logo is a registered trademark of Moxa Inc. All other trademarks or registered marks in this manual belong to their respective manufacturers. Disclaimer Information in this document is subject to change without notice and does not represent a commitment on the part of Moxa. Moxa provides this document as is, without warranty of any kind, either expressed or implied, including, but not limited to, its particular purpose. Moxa reserves the right to make improvements and/or changes to this manual, or to the products and/or the programs described in this manual, at any time. Information provided in this manual is intended to be accurate and reliable. However, Moxa assumes no responsibility for its use, or for any infringements on the rights of third parties that may result from its use. This product might include unintentional technical or typographical errors. Changes are periodically made to the information herein to correct such errors, and these changes are incorporated into new editions of the publication. Technical Support Contact Information www.moxa.com/support Moxa Americas Moxa China (Shanghai office) Toll-free: 1-888-669-2872 Toll-free: 800-820-5036 Tel: +1-714-528-6777 Tel: +86-21-5258-9955 Fax: +1-714-528-6778 Fax: +86-21-5258-5505 Moxa Europe Moxa Asia-Pacific Tel: +49-89-3 70 03 99-0 Tel: +886-2-8919-1230 Fax: +49-89-3 70 03 99-99 Fax: +886-2-8919-1231 Moxa India Tel: +91-80-4172-9088 Fax: +91-80-4132-1045 Table of Contents 1.
    [Show full text]
  • Creating Ipsec and SSL/TLS Tunnels in Linux What's New
    FACEBOOK | WEBGOAT | TOR | DNS | SLEUTHKIT | PACKETFENCE LINUX JOURNAL ™ UU Getting the Most Out of GCC UU Securing Open-Source Phones SECURITY UU How to Store Passwords Safely UU New Column: Hack and / Since 1994: The Original Magazine of the Linux Community JANUARY 2008 | ISSUE 165 Facebook | WebGoat | Tor | DNS | Sleuthkit | PacketFence | GCC Qtopia SXE VPNs | DNS Sleuthkit PacketFence | Tor | WebGoat Facebook SECURITY UU Learn the Path to a More Secure System UU Use Autopsy and Sleuthkit to Analyse Security Breaches UU Discover Dangerous Flaws in Your DNS Infrastructure JANUARY www.linuxjournal.com 2008 Creating IPsec and SSL/TLS $5.99US $6.99CAN 01 ISSUE + Tunnels in Linux 165 What’s New with Eric Raymond? 0 74470 03102 4 lj023:lj018.qxd 11/12/2007 5:36 PM Page 1 The Straight Talk People SM SINCE 1991 ABERDEEN TRUE QUAD-CORE SERVERS. UP TO 16 INDIVIDUAL CORES. ABERDEEN STONEHAVEN A135 ABERDEEN STONEHAVEN A151 ABERDEEN STONEHAVEN A284 Four Quad-Cores 1U 3TB Quad Quad-Core HPC Server 1U 4TB Dual Quad-Core Server 2U 8TB Dual Quad-Core Server • Up to four Quad-Core AMD Opteron™ 8000 Series processors • Up to two Quad-Core AMD Opteron 2000 Series processors • Up to two Quad-Core AMD Opteron 2000 Series processors • nVIDIA nForce Pro Chipset with 64-Bit Support • nVIDIA nForce Pro Chipset with 64-Bit Support • nVIDIA nForce Pro Chipset with 64-Bit Support • Up to 64GB 667MHz ECC Registered DDR2 SDRAM • Up to 32GB 667MHz ECC Registered DDR2 SDRAM • Up to 64GB 667MHz ECC Registered DDR2 SDRAM • Up to 3 x 1TB (3TB Total) Hot-Swap SATA Hard
    [Show full text]
  • Rockjit: Securing Just-In-Time Compilation Using Modular Control-Flow Integrity
    RockJIT: Securing Just-In-Time Compilation Using Modular Control-Flow Integrity Ben Niu Gang Tan Lehigh University Lehigh University 19 Memorial Dr West 19 Memorial Dr West Bethlehem, PA, 18015 Bethlehem, PA, 18015 [email protected] [email protected] ABSTRACT For performance, modern managed language implementations Managed languages such as JavaScript are popular. For perfor- adopt Just-In-Time (JIT) compilation. Instead of performing pure mance, modern implementations of managed languages adopt Just- interpretation, a JIT compiler dynamically compiles programs into In-Time (JIT) compilation. The danger to a JIT compiler is that an native code and performs optimization on the fly based on informa- attacker can often control the input program and use it to trigger a tion collected through runtime profiling. JIT compilation in man- vulnerability in the JIT compiler to launch code injection or JIT aged languages is the key to high performance, which is often the spraying attacks. In this paper, we propose a general approach only metric when comparing JIT engines, as seen in the case of called RockJIT to securing JIT compilers through Control-Flow JavaScript. Hereafter, we use the term JITted code for native code Integrity (CFI). RockJIT builds a fine-grained control-flow graph that is dynamically generated by a JIT compiler, and code heap for from the source code of the JIT compiler and dynamically up- memory pages that hold JITted code. dates the control-flow policy when new code is generated on the fly. In terms of security, JIT brings its own set of challenges. First, a Through evaluation on Google’s V8 JavaScript engine, we demon- JIT compiler is large and usually written in C/C++, which lacks strate that RockJIT can enforce strong security on a JIT compiler, memory safety.
    [Show full text]