'Performance'에 해당되는 글 14

Lwan is a high-performance & scalable web server.

Requests per second vs. number of concurrent connections?


Hello, World! (C)
100B file

Hello, World! (LuaJIT)
32KiB file

Lwan was until recently just a personal research effort that focused mostly on building a solid infrastructure for a lightweight and speedy web server.

With its low disk and memory footprints, it's suitable to be used from embedded devices to robust servers. Both static and dynamic content can be served, as it can also be used as a library. Dynamic content can be generated by code written in either C or Lua.

Its simple architecture and tiny source code guarantees the entire code base can be easily grokked.

Connections are handled individually by coroutines, which are transparently and efficiently juggled by a per-CPU cooperative scheduler, giving the illusion of blocking I/O to handlers.

Resource management is also greatly simplified with coroutines: whenever a client connection is closed, memory is automatically reclaimed, files are automatically closed, references are automatically decremented. This provides more predictability than most garbage collectors, helping keep latencies low while being almost as easy to use.

Homepage :
Github :
2018/07/27 15:34 2018/07/27 15:34
이 글에는 트랙백을 보낼 수 없습니다
오픈아이디로만 댓글을 남길 수 있습니다

This is an expanded version of my talk at NginxConf 2017 on September 6, 2017. As an SRE on the Dropbox Traffic Team, I’m responsible for our Edge network: its reliability, performance, and efficiency. The Dropbox edge network is an nginx-based proxy tier designed to handle both latency-sensitive metadata transactions and high-throughput data transfers. In a system that is handling tens of gigabits per second while simultaneously processing tens of thousands latency-sensitive transactions, there are efficiency/performance optimizations throughout the proxy stack, from drivers and interrupts, through TCP/IP and kernel, to library, and application level tunings.
2018/01/03 12:56 2018/01/03 12:56
이 글에는 트랙백을 보낼 수 없습니다
오픈아이디로만 댓글을 남길 수 있습니다
분류없음  2017/12/30 09:27
objgraph is a module that lets you visually explore Python object graphs.
2017/12/30 09:27 2017/12/30 09:27
이 글에는 트랙백을 보낼 수 없습니다
오픈아이디로만 댓글을 남길 수 있습니다
분류없음  2017/12/30 09:08

Introduction to XDP

XDP or eXpress Data Path provides a high performance, programmable network data path in the Linux kernel as part of the IO Visor Project. XDP provides bare metal packet processing at the lowest point in the software stack which makes it ideal for speed without compromising programmability. Furthermore, new functions can be implemented dynamically with the integrated fast path without kernel modification. Other key benefits of XDP includes the following:

  • It does not require any specialized hardware
  • It does not required kernel bypass
  • It does not replace the TCP/IP stack
  • It works in concert with TCP/IP stack along with all the benefits of BPF

XDP Packet Processing Overview

The XDP packet process includes an in kernel component that processes RX packet-pages directly out of driver via a functional interface without early allocation of skbuff’s or software queues. Normally, one CPU is assigned to each RX queue but in this model, there is no locking RX queue, and CPU can be dedicated to busy poll or interrupt model. BPF programs performs processing such as packet parsing, table look ups, creating/managing stateful filters, encap/decap packets, etc.

XDP Packet Processing

The extensibility of BPF is kept intact with packet inspection and manipulation functions, flow and table lookups, and application processing leveraging BPF programs which are portable to userspace and other operating systems.

2017/12/30 09:08 2017/12/30 09:08
이 글에는 트랙백을 보낼 수 없습니다
오픈아이디로만 댓글을 남길 수 있습니다


As a newcomer to gRPC (in Go) there are many resources setting out what gRPC is, where it originated from and how to create a basic service and client. After completing an introduction to gRPC and setting up a basic implementation I felt a bit lost as to where I need to go next.

gRPC consists of more than just sending binary blobs over HTTP/2. gRPC is also a set of libraries that will provide higher-level features consistently across platforms that other libraries typically do not. The purpose of this blog is to be a guideline for where to find the resources and leverage these libraries and features to make the most of the gRPC ecosystem after you understand the basics of gRPC.

Note:To minimise bloat this article assumes knowledge of gRPC and Protocol Buffers.

2017/12/26 11:42 2017/12/26 11:42
이 글에는 트랙백을 보낼 수 없습니다
오픈아이디로만 댓글을 남길 수 있습니다
Dot:Where is ......
Where is ......
전체 (176)
주절거림 (60)
윈도우벽지 (2)
Shoveling.. (9)
주워들은것들.. (48)
요집이 괜찮더라!! (0)
찍사놀이 (7)
관심꺼리~ (4)
«   2018/11   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
  1. 내 맘대로 보는 세상  2009
    맘에 안드는 Internet Explorer 업데이트 방침!
  2. 시리니  2008
    브라우저 업데이트, 작지만 큰 실천입니다.
  3. Dinosur와 KM의 Blog  2007
    저도 보통 사람
  1. 2018/07 (1)
  2. 2018/01 (11)
  3. 2017/12 (10)
  4. 2017/10 (1)
  5. 2017/05 (13)