Java Development: Do s and Don ts

Size: px
Start display at page:

Download "Java Development: Do s and Don ts"

Transcription

1 Java Development: Do s and Don ts 1

2 Overview Asynchronous networking Data copies Connection management Logging 2

3 ASL Project 2016: Middleware for different replication modes Middleware op SET/DEL GET Memcached hash op SET/DEL GET Memcached Middleware provides multiple replication schemes Sets and Deletes are handled by an asynchronous thread (one for each server) Gets are handled by a synchronous reader thread pool 3

4 What is wrong with this code? GET queue Memcached 4

5 What is wrong with this code? GET queue public class ReadHandler implements Runnable { [] public ReadHandler(BlockingQueue<Request> queue, InetSocketAddress serveraddr){ this.queue = queue; server = SocketChannel.open(); server.connect(serveraddr); server.configureblocking(false); Memcached public void run(){ while(true){ Request request = queue.take(); ByteBuffer command = ByteBuffer.wrap(request.getCommand()); server.write(command); command.clear(); ByteBuffer buf_header = ByteBuffer.allocate(message_size); int bytesread = 0; do{ bytesread = server.read(buf_header); while(bytesread == 0); [] 5

6 What is wrong with this code? GET queue public class ReadHandler implements Runnable { [] public ReadHandler(BlockingQueue<Request> queue, InetSocketAddress serveraddr){ this.queue = queue; server = SocketChannel.open(); server.connect(serveraddr); server.configureblocking(false); Socket is non-blocking. What are the implications? public void run(){ while(true){ Request request = queue.take(); ByteBuffer command = ByteBuffer.wrap(request.getCommand()); server.write(command); command.clear(); Memcached ByteBuffer buf_header = ByteBuffer.allocate(message_size); int bytesread = 0; do{ bytesread = server.read(buf_header); while(bytesread == 0); [] 6

7 What is wrong with this code? GET queue public class ReadHandler implements Runnable { [] public ReadHandler(BlockingQueue<Request> queue, InetSocketAddress serveraddr){ this.queue = queue; server = SocketChannel.open(); server.connect(serveraddr); server.configureblocking(false); Socket is non-blocking. What are the implications? public void run(){ while(true){ Request request = queue.take(); ByteBuffer command = ByteBuffer.wrap(request.getCommand()); server.write(command); command.clear(); Memcached ByteBuffer buf_header = ByteBuffer.allocate(message_size); int bytesread = 0; do{ bytesread = server.read(buf_header); while(bytesread == 0); Read will return instantly [] 7

8 What is wrong with this code? GET queue public class ReadHandler implements Runnable { [] public ReadHandler(BlockingQueue<Request> queue, InetSocketAddress serveraddr){ this.queue = queue; server = SocketChannel.open(); server.connect(serveraddr); server.configureblocking(false); Socket is non-blocking. What are the implications? Memcached public void run(){ while(true){ Request request = queue.take(); How about a read with timeout? ByteBuffer command = ByteBuffer.wrap(request.getCommand()); server.write(command); command.clear(); ByteBuffer buf_header = ByteBuffer.allocate(message_size); int bytesread = 0; do{ bytesread = server.read(buf_header); while(bytesread == 0); Read will return instantly [] 8

9 What is wrong with this code? GET queue public class ReadHandler implements Runnable { [] public ReadHandler(BlockingQueue<Request> queue, InetSocketAddress serveraddr){ this.queue = queue; server = SocketChannel.open(); server.connect(serveraddr); server.configureblocking(false); Socket is non-blocking. What are the implications? Memcached public void run(){ while(true){ Request request = queue.take(); How about a read with timeout? ByteBuffer command = ByteBuffer.wrap(request.getCommand()); Can lead to increasing and server.write(command); unpredictable response time. command.clear(); ByteBuffer buf_header = ByteBuffer.allocate(message_size); int bytesread = 0; do{ bytesread = server.read(buf_header); while(bytesread == 0); Read will return instantly [] 9

10 How much difference can this change make? req/sec 10

11 How much difference can this change make? req/sec req/sec 11

12 How about different message sizes? Student A Student B 12

13 How about different message sizes? Student A Is this network bound? Student B 13

14 How about different message sizes? Student A Is this network bound? No. Sending data to 7 servers is not 2x slower than 3 servers. Required bandwidth << network bw. Student B 14

15 How about different message sizes? Student A Large messages should have a higher latency. Is this network bound? No. Sending data to 7 servers is not 2x slower than 3 servers. Required bandwidth << network bw. Student B 15

16 How about different message sizes? Student A Large messages should have a higher latency. Yes, but multiple threads will hide that latency and sustain the throughput. Is this network bound? No. Sending data to 7 servers is not 2x slower than 3 servers. Required bandwidth << network bw. Student B 16

17 How about different message sizes? Student A Large messages should have a higher latency. Yes, but multiple threads will hide that latency and sustain the throughput. Is this network bound? No. Sending data to 7 servers is not 2x slower than 3 servers. Required bandwidth << network bw. Student B Data is copied across buffers! String s1 = request ; String s2 = new String(s1); 17

18 Overview Asynchronous networking Data copies Connection management Logging 18

19 Network Microbenchmark: Echo server Message Client Server Client connects to server and sends message Server reads message and sends it back Client reads message 19

20 What is wrong with this code? Client Code: long starttime = System.nanoTime(); for (int i = 0; i < ; ++i) { Socket socket = new Socket(hostName, portnumber); PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out.println(m); out.flush(); String t = in.readline(); out.close(); in.close(); socket.close(); long stoptime = System.nanoTime(); System.out.println("It took " + (stoptime starttime) + ns ); 20

21 What is wrong with this code? Client Code: long starttime = System.nanoTime(); for (int i = 0; i < ; ++i) { Socket socket = new Socket(hostName, portnumber); PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out.println(m); out.flush(); String t = in.readline(); You measure how fast the OS can open and close connections out.close(); in.close(); socket.close(); long stoptime = System.nanoTime(); System.out.println("It took " + (stoptime starttime) + ns ); 21

22 Keep connections open Client Code: long starttime = System.nanoTime(); Open the connection once and reuse it Client Code: long starttime = System.nanoTime(); for (int i = 0; i < ; ++i) { Socket socket = new Socket(hostName, portnumber); PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out.println(m); out.flush(); String t = in.readline(); out.close(); in.close(); socket.close(); Socket socket = new Socket(hostName, portnumber); PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); for (int i = 0; i < ; ++i) { out.println(m); out.flush(); String t = in.readline(); out.close(); in.close(); socket.close(); long stoptime = System.nanoTime(); System.out.println("It took " + (stoptime starttime) + ns ); long stoptime = System.nanoTime(); System.out.println("It took " + (stoptime starttime) + ns ); 22

23 What is the impact? x difference Messages/sec Single Connection Open/Close 1024 bytes 23

24 What is the impact? Larger difference for smaller messages x difference Messages/sec Messages/sec Single Connection Open/Close 0 Single Connection Open/Close 128 bytes 1024 bytes 24

25 What is the impact? Messages/sec Messages/sec Single Connection Open/Close 0 Single Connection Open/Close 128 bytes 1024 bytes 25

26 What is the impact? Single client (1 thread). Lower latency results in higher throughput Messages/sec Messages/sec Single Connection Open/Close 0 Single Connection Open/Close 128 bytes 1024 bytes 26

27 What is the impact? Opening/closing connections is the bottleneck of this system Messages/sec Messages/sec Single Connection Open/Close 0 Single Connection Open/Close 128 bytes 1024 bytes 27

28 Overview Asynchronous networking Data copies Connection management Logging 28

29 Logging to files vs main memory for (int i = 0; i < ; ++i) { int keyhash = hashfunction(keys[i]); logging.println("key " + keys[i] + " hashes to " + keyhash); logging.flush(); 29

30 Logging to files vs main memory for (int i = 0; i < ; ++i) { int keyhash = hashfunction(keys[i]); logging.println("key " + keys[i] + " hashes to " + keyhash); logging.flush(); Avoid excessive logging/flushing in critical sections for (int i = 0; i < ; ++i) { values[i] = hashfunction(keys[i]); for (int i = 0; i < ; ++i) { logging.println("key " + keys[i] + " hashes to + values[i]); logging.flush(); logging.close(); 30

31 Logging to files vs main memory for (int i = 0; i < ; ++i) { int keyhash = hashfunction(keys[i]); logging.println("key " + keys[i] + " hashes to " + keyhash); logging.flush(); Avoid excessive logging/flushing in critical sections for (int i = 0; i < ; ++i) { values[i] = hashfunction(keys[i]); for (int i = 0; i < ; ++i) { logging.println("key " + keys[i] + " hashes to + values[i]); logging.flush(); logging.close(); Million Ops/sec File (excessive flushing) File (occasional flushing) Main Memory 31

32 Logging to files vs main memory for (int i = 0; i < ; ++i) { int keyhash = hashfunction(keys[i]); logging.println("key " + keys[i] + " hashes to " + keyhash); logging.flush(); Avoid excessive logging/flushing in critical sections x difference 1 for (int i = 0; i < ; ++i) { values[i] = hashfunction(keys[i]); for (int i = 0; i < ; ++i) { logging.println("key " + keys[i] + " hashes to + values[i]); logging.flush(); logging.close(); Million Ops/sec File (excessive flushing) File (occasional flushing) Main Memory 32

33 Recurring questions about threads/queues 33

34 Recurring questions about threads How many net threads are allowed? / Can I use helper threads? / Can I deviate from the thread design in the figure? It is OK to use helper thread(s), but the fundamental operations (data receiving and sending, request decoding) has to happen as shown in the figure. Points of measurement should be equivalent to the given design also! 34

35 Recurring questions about queues What type of objects are enqueued in the queue? / Where should I parse the requests? Logically, each element in the queue must correspond to a single request. The exact implementation is up to you, but in the report you must explain why the implementation fulfills this condition. Work division between the different types of threads is up to you, but the measurement points must also correspond to the description. 35

36 Take-away message: Be careful with Non-blocking and asynchronous I/O Copying of large data buffers Opening and closing connections Flushing your data to disk in hot loops 36

Network Programming. Powered by Pentalog. by Vlad Costel Ungureanu for Learn Stuff

Network Programming. Powered by Pentalog. by Vlad Costel Ungureanu for Learn Stuff Network Programming by Vlad Costel Ungureanu for Learn Stuff Java Network Protocols 2 Java Network Protocols 3 Addresses Innet4Address (32-bit) 85.122.23.145 - numeric pentalog.com symbolic Innet6Address

More information

URL Kullanımı Get URL

URL Kullanımı Get URL Networking 1 URL Kullanımı Get URL URL info 2 import java.io.*; import java.net.*; public class GetURL { public static void main(string[] args) { InputStream in = null; OutputStream out = null; // Check

More information

Improving Java Network Programming. Brian Runk, 25 Apr 2006

Improving Java Network Programming. Brian Runk, 25 Apr 2006 Improving Java Network Programming Brian Runk, b.runk@morganstanley.com 25 Apr 2006 Topics Background A simple distributed application java.net programming model java.nio programming model A better programming

More information

Lecture 3: Socket Programming

Lecture 3: Socket Programming Lecture 3: Socket Programming Prof. Shervin Shirmohammadi SITE, University of Ottawa Fall 2005 CEG4183/ELG4183 3-1 Sockets From a logical perspective, a Socket is a communication end point. It is not a

More information

Input from Files. Buffered Reader

Input from Files. Buffered Reader Input from Files Buffered Reader Input from files is always text. You can convert it to ints using Integer.parseInt() We use BufferedReaders to minimize the number of reads to the file. The Buffer reads

More information

COMP 213. Advanced Object-oriented Programming. Lecture 20. Network Programming

COMP 213. Advanced Object-oriented Programming. Lecture 20. Network Programming COMP 213 Advanced Object-oriented Programming Lecture 20 Network Programming Network Programming A network consists of several computers connected so that data can be sent from one to another. Network

More information

protocols September 15,

protocols  September 15, Contents SCI 351 4 Protocols, WWW Internet applications WWW, document technology Lennart Herlaar Original slides by Piet van Oostrum September 15, 2003 SCI351-4 1 X SCI351-4 1 X Internet applications How

More information

Java Technologies. Lecture VII. Valdas Rapševičius. Vilnius University Faculty of Mathematics and Informatics

Java Technologies. Lecture VII. Valdas Rapševičius. Vilnius University Faculty of Mathematics and Informatics Preparation of the material was supported by the project Increasing Internationality in Study Programs of the Department of Computer Science II, project number VP1 2.2 ŠMM-07-K-02-070, funded by The European

More information

MySQL Database Scalability

MySQL Database Scalability MySQL Database Scalability Nextcloud Conference 2016 TU Berlin Oli Sennhauser Senior MySQL Consultant at FromDual GmbH oli.sennhauser@fromdual.com 1 / 14 About FromDual GmbH Support Consulting remote-dba

More information

Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland

Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland t Your task Write a simple file server Client has to be implemented in Java Server has to be implemented

More information

Multimedia Programming

Multimedia Programming Multimedia Programming Medialogy, 8 th Semester, Aalborg University Wednesday 6 June 2012, 09.00 12.00 Instructions and notes You have 3 hours to complete this examination. Neither written material nor

More information

Distributed Systems COMP 212. Lecture 8 Othon Michail

Distributed Systems COMP 212. Lecture 8 Othon Michail Distributed Systems COMP 212 Lecture 8 Othon Michail HTTP Protocol Hypertext Transfer Protocol Used to transmit resources on the WWW HTML files, image files, query results, Identified by Uniform Resource

More information

Verteilte Systeme UE Important Code

Verteilte Systeme UE Important Code Verteilte Systeme UE Important Code Lab 1 Create ServerSocket ServerSocket serversocket = new ServerSocket(tcpPort); //throws IOException Accept ClientSocket Socket clientsocket = serversocket.accept();

More information

CS 2113 Software Engineering

CS 2113 Software Engineering CS 2113 Software Engineering Java 6: File and Network IO https://github.com/cs2113f18/template-j-6-io.git Professor Tim Wood - The George Washington University Project 2 Zombies Basic GUI interactions

More information

Network. Dr. Jens Bennedsen, Aarhus University, School of Engineering Aarhus, Denmark

Network. Dr. Jens Bennedsen, Aarhus University, School of Engineering Aarhus, Denmark Network Dr. Jens Bennedsen, Aarhus University, School of Engineering Aarhus, Denmark jbb@ase.au.dk Outline Socket programming If we have the time: Remote method invocation (RMI) 2 Socket Programming Sockets

More information

Sockets and RMI. CS151 Chris Pollett Dec. 5, 2005.

Sockets and RMI. CS151 Chris Pollett Dec. 5, 2005. Sockets and RMI CS151 Chris Pollett Dec. 5, 2005. Outline Echo Server with Multiple Clients Client pull/server push Remote Method Invocation Proxy Pattern Echo Server with Multiple Clients public class

More information

Distributed Programming - Sockets

Distributed Programming - Sockets Distributed Programming - Sockets Piet van Oostrum May 25, 2009 Concurrency In praktische situaties krijgen we concurrency door: Processen Threads Interrupts (alleen intern in het O.S.) Processen Onafhankelijke

More information

Previous lecture: threads G51PRG: Introduction to Programming Second semester Lecture 12 URL

Previous lecture: threads G51PRG: Introduction to Programming Second semester Lecture 12 URL Previous lecture: threads G51PRG: Introduction to Programming Second semester Lecture 12 What is a thread Why use multiple threads Issues and problems involved Java threads Natasha Alechina School of Computer

More information

Java s Implementation of Concurrency, and how to use it in our applications.

Java s Implementation of Concurrency, and how to use it in our applications. Java s Implementation of Concurrency, and how to use it in our applications. 1 An application running on a single CPU often appears to perform many tasks at the same time. For example, a streaming audio/video

More information

JAVA BYTE IPC: PART 1 DERIVING NIO FROM I/O. Instructor: Prasun Dewan (FB 150,

JAVA BYTE IPC: PART 1 DERIVING NIO FROM I/O. Instructor: Prasun Dewan (FB 150, JAVA BYTE IPC: PART 1 DERIVING NIO FROM I/O Instructor: Prasun Dewan (FB 150, dewan@unc.edu) ROX TUTORIAL 2 ROX ECHO APPLICATION Client Server Client Client 3 ASSIGNMENT REQUIREMENTS Client Server Client

More information

CS 856 Latency in Communication Systems

CS 856 Latency in Communication Systems CS 856 Latency in Communication Systems Winter 2010 Latency Challenges CS 856, Winter 2010, Latency Challenges 1 Overview Sources of Latency low-level mechanisms services Application Requirements Latency

More information

Advanced Java Programming. Networking

Advanced Java Programming. Networking Advanced Java Programming Networking Eran Werner and Ohad Barzilay Tel-Aviv University Advanced Java Programming, Spring 2006 1 Overview of networking Advanced Java Programming, Spring 2006 2 TCP/IP protocol

More information

CSE Traditional Operating Systems deal with typical system software designed to be:

CSE Traditional Operating Systems deal with typical system software designed to be: CSE 6431 Traditional Operating Systems deal with typical system software designed to be: general purpose running on single processor machines Advanced Operating Systems are designed for either a special

More information

ffwd: delegation is (much) faster than you think Sepideh Roghanchi, Jakob Eriksson, Nilanjana Basu

ffwd: delegation is (much) faster than you think Sepideh Roghanchi, Jakob Eriksson, Nilanjana Basu ffwd: delegation is (much) faster than you think Sepideh Roghanchi, Jakob Eriksson, Nilanjana Basu int get_seqno() { } return ++seqno; // ~1 Billion ops/s // single-threaded int threadsafe_get_seqno()

More information

COMP-202: Foundations of Programming. Lecture 12: Linked List, and File I/O Sandeep Manjanna, Summer 2015

COMP-202: Foundations of Programming. Lecture 12: Linked List, and File I/O Sandeep Manjanna, Summer 2015 COMP-202: Foundations of Programming Lecture 12: Linked List, and File I/O Sandeep Manjanna, Summer 2015 Announcements Assignment 4 is posted and Due on 29 th of June at 11:30 pm. Course Evaluations due

More information

Computer Networks. 5th of February, This exam consists of 6 questions with subquestions. Every subquestion counts for 10 points.

Computer Networks. 5th of February, This exam consists of 6 questions with subquestions. Every subquestion counts for 10 points. Computer Networks 5th of February, 05 This exam consists of 6 questions with subquestions. Every subquestion counts for 0 points. Mark every page with name and student number. Use of books, additional

More information

THE CONTEXTUAL DATA SUPPLIER. API Integration Guide

THE CONTEXTUAL DATA SUPPLIER. API Integration Guide THE CONTEXTUAL DATA SUPPLIER API Integration Guide Contextual Data API v3 April 2018 Overview No Matter if you want to integrate our Contextual Data API into your website with JavaScript or call it from

More information

CS 126 Lecture S5: Networking

CS 126 Lecture S5: Networking CS 126 Lecture S5: Networking Outline Introductions Connectivity Naming and addressing Abstractions and layering Example: socket programming Conclusions CS126 24-1 Randy Wang Review: Technology Advances

More information

CS 126 Lecture S5: Networking

CS 126 Lecture S5: Networking CS 126 Lecture S5: Networking Outline Introductions Connectivity Naming and addressing Abstractions and layering Example: socket programming Conclusions CS126 24-1 Randy Wang Review: Technology Advances

More information

Project 0. Danyang Zhuo CSE sp Sec;on #2

Project 0. Danyang Zhuo CSE sp Sec;on #2 Project 0 Danyang Zhuo CSE 461 15sp Sec;on #2 Proj0 You have to implement: Mul;- UDP Server Mul;- UDP Client Async IO UDP Server Async IO UDP Client Your server must support mul;ple clients Submit Format

More information

Networking Basics. network communication.

Networking Basics. network communication. JAVA NETWORKING API Networking Basics When you write Java programs that communicate over the network, you are programming at the application layer. Typically, you don't need to concern yourself with the

More information

TCP connections. Fundamentals of Internet Connections Objectives. Connect to an Echo port. java.net.socket

TCP connections. Fundamentals of Internet Connections Objectives. Connect to an Echo port. java.net.socket Objectives TCP connections To understand programming of clients that connect to servers via TCP To understand the basics of programming of servers that accept TCP connections To practice programming of

More information

Object-Oriented Software Engineering (Re-exam for Object-Oriented Analysis, Design and Programming)

Object-Oriented Software Engineering (Re-exam for Object-Oriented Analysis, Design and Programming) Object-Oriented Software Engineering (Re-exam for Object-Oriented Analysis, Design and Programming) Medialogy, 4 th Semester, Aalborg Monday 11 June 2012, 09.00 12.00 Instructions You have 3 hours to complete

More information

Flash: an efficient and portable web server

Flash: an efficient and portable web server Flash: an efficient and portable web server High Level Ideas Server performance has several dimensions Lots of different choices on how to express and effect concurrency in a program Paper argues that

More information

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of California, Berkeley Operating Systems Principles

More information

Block Device Scheduling. Don Porter CSE 506

Block Device Scheduling. Don Porter CSE 506 Block Device Scheduling Don Porter CSE 506 Logical Diagram Binary Formats Memory Allocators System Calls Threads User Kernel RCU File System Networking Sync Memory Management Device Drivers CPU Scheduler

More information

Block Device Scheduling

Block Device Scheduling Logical Diagram Block Device Scheduling Don Porter CSE 506 Binary Formats RCU Memory Management File System Memory Allocators System Calls Device Drivers Interrupts Net Networking Threads Sync User Kernel

More information

Lab 1 : Java Sockets

Lab 1 : Java Sockets Lab 1 : Java Sockets 1. Goals In this lab you will work with a low-level mechanism for distributed communication. You will discover that Java sockets do not provide: - location transparency - naming transparency

More information

Java Networking (sockets)

Java Networking (sockets) Java Networking (sockets) Rui Moreira Links: http://java.sun.com/docs/books/tutorial/networking/toc.html#sockets http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets_p.html Networking Computers

More information

Computer Systems Laboratory Sungkyunkwan University

Computer Systems Laboratory Sungkyunkwan University I/O System Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Introduction (1) I/O devices can be characterized by Behavior: input, output, storage

More information

System Models for Distributed Systems

System Models for Distributed Systems System Models for Distributed Systems INF5040/9040 Autumn 2015 Lecturer: Amir Taherkordi (ifi/uio) August 31, 2015 Outline 1. Introduction 2. Physical Models 4. Fundamental Models 2 INF5040 1 System Models

More information

Computer Architecture Computer Science & Engineering. Chapter 6. Storage and Other I/O Topics BK TP.HCM

Computer Architecture Computer Science & Engineering. Chapter 6. Storage and Other I/O Topics BK TP.HCM Computer Architecture Computer Science & Engineering Chapter 6 Storage and Other I/O Topics Introduction I/O devices can be characterized by Behaviour: input, output, storage Partner: human or machine

More information

Outlook. Process Concept Process Scheduling Operations on Processes. IPC Examples

Outlook. Process Concept Process Scheduling Operations on Processes. IPC Examples Processes Outlook Process Concept Process Scheduling Operations on Processes Interprocess Communication o IPC Examples 2 Process Concept What is a Process? A process is a program in execution Process includes

More information

public static void main(string[] args) throws IOException { sock = new Socket(args[0], Integer.parseInt(args[1]));

public static void main(string[] args) throws IOException { sock = new Socket(args[0], Integer.parseInt(args[1])); Echo Client&Server Application EchoClient import java.net.*; import java.io.*; class EchoClient public static void main(string[] args) throws IOException if (args.length < 2) number>"); System.err.println("Usage:

More information

I/O Buffering and Streaming

I/O Buffering and Streaming I/O Buffering and Streaming I/O Buffering and Caching I/O accesses are reads or writes (e.g., to files) Application access is arbitary (offset, len) Convert accesses to read/write of fixed-size blocks

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make

More information

CSE 124: OPTIONS, SIGNALS, TIMEOUTS, AND CONCURRENCY. George Porter Oct 13, 2017

CSE 124: OPTIONS, SIGNALS, TIMEOUTS, AND CONCURRENCY. George Porter Oct 13, 2017 CSE 124: OPTIONS, SIGNALS, TIMEOUTS, AND CONCURRENCY George Porter Oct 13, 2017 ATTRIBUTION These slides are released under an Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) Creative

More information

Byte and Character Streams. Reading and Writing Console input and output

Byte and Character Streams. Reading and Writing Console input and output Byte and Character Streams Reading and Writing Console input and output 1 I/O basics The io package supports Java s basic I/O (input/output) Java does provide strong, flexible support for I/O as it relates

More information

Page 1. CS194-3/CS16x Introduction to Systems. Lecture 22. TCP congestion control, Two-Phase Commit. 3-way handshake. ½ close.

Page 1. CS194-3/CS16x Introduction to Systems. Lecture 22. TCP congestion control, Two-Phase Commit. 3-way handshake. ½ close. CS194-3/CS16x Introduction to Systems Lecture 22 TCP congestion control, Two-Phase Commit November 14, 2007 Prof. Anthony D. Joseph http://www.cs.berkeley.edu/~adj/cs16x Review: Networking Definitions

More information

1.00 Lecture 30. Sending information to a Java program

1.00 Lecture 30. Sending information to a Java program 1.00 Lecture 30 Input/Output Introduction to Streams Reading for next time: Big Java 15.5-15.7 Sending information to a Java program So far: use a GUI limited to specific interaction with user sometimes

More information

CSCD 330 Network Programming

CSCD 330 Network Programming CSCD 330 Network Programming Lecture 8 Client-Server Programming Threads Winter 2015 Reading: Chapter 2, Relevant Links Some Material in these slides from J.F Kurose and K.W. Ross All material copyright

More information

CS5460: Operating Systems Lecture 20: File System Reliability

CS5460: Operating Systems Lecture 20: File System Reliability CS5460: Operating Systems Lecture 20: File System Reliability File System Optimizations Modern Historic Technique Disk buffer cache Aggregated disk I/O Prefetching Disk head scheduling Disk interleaving

More information

COMP-202: Foundations of Programming. Lecture 22: File I/O Jackie Cheung, Winter 2015

COMP-202: Foundations of Programming. Lecture 22: File I/O Jackie Cheung, Winter 2015 COMP-202: Foundations of Programming Lecture 22: File I/O Jackie Cheung, Winter 2015 Announcements Assignment 5 due Tue Mar 31 at 11:59pm Quiz 6 due Tue Apr 7 at 11:59pm 2 Review 1. What is a graph? How

More information

Final Lecture. A few minutes to wrap up and add some perspective

Final Lecture. A few minutes to wrap up and add some perspective Final Lecture A few minutes to wrap up and add some perspective 1 2 Instant replay The quarter was split into roughly three parts and a coda. The 1st part covered instruction set architectures the connection

More information

Pieter van den Hombergh Richard van den Ham. March 17, 2018

Pieter van den Hombergh Richard van den Ham. March 17, 2018 : Network : Network, Object Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek March 17, 2018 /FHTenL : Network March 17, 2018 1/21 Topics, Object Some everyday life

More information

Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University. See P&H Chapter: , 5.8, 5.10, 5.15; Also, 5.13 & 5.

Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University. See P&H Chapter: , 5.8, 5.10, 5.15; Also, 5.13 & 5. Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University See P&H Chapter: 5.1-5.4, 5.8, 5.10, 5.15; Also, 5.13 & 5.17 Writing to caches: policies, performance Cache tradeoffs and

More information

CS September 2017

CS September 2017 Machine vs. transport endpoints IP is a network layer protocol: packets address only the machine IP header identifies source IP address, destination IP address Distributed Systems 01r. Sockets Programming

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/58 Definition Distributed Systems Distributed System is

More information

Closing the Performance Gap Between Volatile and Persistent K-V Stores

Closing the Performance Gap Between Volatile and Persistent K-V Stores Closing the Performance Gap Between Volatile and Persistent K-V Stores Yihe Huang, Harvard University Matej Pavlovic, EPFL Virendra Marathe, Oracle Labs Margo Seltzer, Oracle Labs Tim Harris, Oracle Labs

More information

CS 450 Exam 2 Mon. 11/7/2016

CS 450 Exam 2 Mon. 11/7/2016 CS 450 Exam 2 Mon. 11/7/2016 Name: Rules and Hints You may use one handwritten 8.5 11 cheat sheet (front and back). This is the only additional resource you may consult during this exam. No calculators.

More information

Shadow: Real Applications, Simulated Networks. Dr. Rob Jansen U.S. Naval Research Laboratory Center for High Assurance Computer Systems

Shadow: Real Applications, Simulated Networks. Dr. Rob Jansen U.S. Naval Research Laboratory Center for High Assurance Computer Systems Shadow: Real Applications, Simulated Networks Dr. Rob Jansen Center for High Assurance Computer Systems Cyber Modeling and Simulation Technical Working Group Mark Center, Alexandria, VA October 25 th,

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/60 Definition Distributed Systems Distributed System is

More information

JAVA 프로그래밍 II. Lab #7 (Networking) TCP Java Socket. TCP vs UDP 2017 학년도 1 학기 년봄학기 5/24/2017 박경신. Client. Server

JAVA 프로그래밍 II. Lab #7 (Networking) TCP Java Socket. TCP vs UDP 2017 학년도 1 학기 년봄학기 5/24/2017 박경신. Client. Server Lab #7 (Networking) 2017 학년도 1 학기 JAVA 프로그래밍 II 기존요구사항분석 Lab #6 는 Thread, Runnable 과 SwingWorker 를이용한다양한멀티스레드기능을사용 Lab #7 는 TCP/UDP 등다양한네트워크프로그래밍기능을사용 TCP, UDP, HTTP, File Transfer 514770-1 2017 년봄학기 5/24/2017

More information

3. Remote Procedure Call

3. Remote Procedure Call 3. Remote Procedure Call Master II Software Engineering Imed Bouchrika Dept of Mathematics & Computer Science University of Souk-Ahras imed@imed.ws Imed Bouchrika. Distributed Objects, Uni of Souk-Ahras

More information

Third Midterm Exam April 24, 2017 CS162 Operating Systems

Third Midterm Exam April 24, 2017 CS162 Operating Systems University of California, Berkeley College of Engineering Computer Science Division EECS Spring 2017 Ion Stoica Third Midterm Exam April 24, 2017 CS162 Operating Systems Your Name: SID AND 162 Login: TA

More information

CS 11 java track: lecture 6

CS 11 java track: lecture 6 CS 11 java track: lecture 6 This week: networking basics Sockets Vectors parsing strings what is networking? the network: world-wide web of interconnected computers "the internet" networking: programming

More information

Chapter 2 Application Layer

Chapter 2 Application Layer Internet and Intranet Protocols and Applications Lecture 4: Application Layer 3: Socket Programming Spring 2006 Arthur Goldberg Computer Science Department New York University artg@cs.nyu.edu Chapter 2

More information

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc. judge DOMjudge team manual Summary /\ DOM DOM judge Here follows a short summary of the system interface. This is meant as a quick introduction, to be able to start using the system. It is, however, strongly

More information

Much Faster Networking

Much Faster Networking Much Faster Networking David Riddoch driddoch@solarflare.com Copyright 2016 Solarflare Communications, Inc. All rights reserved. What is kernel bypass? The standard receive path The standard receive path

More information

Caches (Writing) Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University. P & H Chapter 5.2 3, 5.5

Caches (Writing) Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University. P & H Chapter 5.2 3, 5.5 s (Writing) Hakim Weatherspoon CS, Spring Computer Science Cornell University P & H Chapter.,. Administrivia Lab due next onday, April th HW due next onday, April th Goals for Today Parameter Tradeoffs

More information

??? Traceroute. app. app. host. host. Apps talk to other apps with no real idea of what is inside the network

??? Traceroute. app. app. host. host. Apps talk to other apps with no real idea of what is inside the network About Me Esther Jang 3rd year PhD student Information and Communications Technology for Development Community Cellular Network deployments My goal is to get better at teaching. Computer Networks 2 Traceroute

More information

Distributed Programming

Distributed Programming Distributed Programming Processes don t share memory. Processes share channels over which messages are passed Channels may be Global, receiver specific, or sender & receiver specific. One or two way. c

More information

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc. judge DOMjudge team manual Summary /\ DOM DOM judge Here follows a short summary of the system interface. This is meant as a quick introduction, to be able to start using the system. It is, however, strongly

More information

I/O Handling. ECE 650 Systems Programming & Engineering Duke University, Spring Based on Operating Systems Concepts, Silberschatz Chapter 13

I/O Handling. ECE 650 Systems Programming & Engineering Duke University, Spring Based on Operating Systems Concepts, Silberschatz Chapter 13 I/O Handling ECE 650 Systems Programming & Engineering Duke University, Spring 2018 Based on Operating Systems Concepts, Silberschatz Chapter 13 Input/Output (I/O) Typical application flow consists of

More information

GPUfs: Integrating a file system with GPUs

GPUfs: Integrating a file system with GPUs GPUfs: Integrating a file system with GPUs Mark Silberstein (UT Austin/Technion) Bryan Ford (Yale), Idit Keidar (Technion) Emmett Witchel (UT Austin) 1 Traditional System Architecture Applications OS CPU

More information

CSCD 330 Network Programming

CSCD 330 Network Programming CSCD 330 Network Programming Lecture 8 Client-Server Programming Threads Spring 2018 Reading: Chapter 2, Relevant Links - Threads Some Material in these slides from J.F Kurose and K.W. Ross All material

More information

Architecture or Parallel Computers CSC / ECE 506

Architecture or Parallel Computers CSC / ECE 506 Architecture or Parallel Computers CSC / ECE 506 Summer 2006 Scalable Programming Models 6/19/2006 Dr Steve Hunter Back to Basics Parallel Architecture = Computer Architecture + Communication Architecture

More information

Remote Procedure Call. Tom Anderson

Remote Procedure Call. Tom Anderson Remote Procedure Call Tom Anderson Why Are Distributed Systems Hard? Asynchrony Different nodes run at different speeds Messages can be unpredictably, arbitrarily delayed Failures (partial and ambiguous)

More information

Lies, Damn Lies and Benchmarks: How to Accurately Measure Distributed Application Performance. Heinz Schaffner

Lies, Damn Lies and Benchmarks: How to Accurately Measure Distributed Application Performance. Heinz Schaffner Lies, Damn Lies and Benchmarks: How to Accurately Measure Distributed Application Performance Heinz Schaffner Science Projects vs. Production Testing to Destruction vs. Distressed Processing Latency Schemes

More information

Innodb Performance Optimization

Innodb Performance Optimization Innodb Performance Optimization Most important practices Peter Zaitsev CEO Percona Technical Webinars December 20 th, 2017 1 About this Presentation Innodb Architecture and Performance Optimization 3h

More information

Comp 204: Computer Systems and Their Implementation. Lecture 18: Devices

Comp 204: Computer Systems and Their Implementation. Lecture 18: Devices Comp 204: Computer Systems and Their Implementation Lecture 18: Devices 1 Today Devices Introduction Handling I/O Device handling Buffering and caching 2 Operating System An Abstract View User Command

More information

CSE506: Operating Systems CSE 506: Operating Systems

CSE506: Operating Systems CSE 506: Operating Systems CSE 506: Operating Systems Disk Scheduling Key to Disk Performance Don t access the disk Whenever possible Cache contents in memory Most accesses hit in the block cache Prefetch blocks into block cache

More information

Requirements. PA4: Multi-thread File Downloader Page 1. Assignment

Requirements. PA4: Multi-thread File Downloader Page 1. Assignment PA4: Multi-thread File Downloader Page 1 Assignment What to Submit Write a program that downloads a file from the Internet using multiple threads. The application has a Graphical Interface written in JavaFX,

More information

Object Oriented Software Design

Object Oriented Software Design Object Oriented Software Design I/O subsystem API Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 10, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction to Java

More information

Object Oriented Software Design

Object Oriented Software Design Object Oriented Software Design I/O subsystem API Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 10, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction to Java

More information

CS193j, Stanford Handout #26. Files and Streams

CS193j, Stanford Handout #26. Files and Streams CS193j, Stanford Handout #26 Summer, 2003 Manu Kumar Files and Streams File The File class represents a file or directory in the file system. It provides platform independent ways to test file attributes,

More information

CSE 451: Operating Systems. Section 10 Project 3 wrap-up, final exam review

CSE 451: Operating Systems. Section 10 Project 3 wrap-up, final exam review CSE 451: Operating Systems Section 10 Project 3 wrap-up, final exam review Final exam review Goal of this section: key concepts you should understand Not just a summary of lectures Slides coverage and

More information

Devices. Today. Comp 104: Operating Systems Concepts. Operating System An Abstract View 05/01/2017. Devices. Devices

Devices. Today. Comp 104: Operating Systems Concepts. Operating System An Abstract View 05/01/2017. Devices. Devices Comp 104: Operating Systems Concepts Devices Today Devices Introduction Handling I/O Device handling Buffering and caching 1 2 Operating System An Abstract View User Command Interface Processor Manager

More information

CONCURRENCY IN JAVA Course Parallel Computing

CONCURRENCY IN JAVA Course Parallel Computing CONCURRENCY IN JAVA Course Parallel Computing Wolfgang Schreiner Research Institute for Symbolic Computation (RISC) Wolfgang.Schreiner@risc.jku.at http://www.risc.jku.at Java on a NUMA Architecture Loading

More information

Apple. Massive Scale Deployment / Connectivity. This is not a contribution

Apple. Massive Scale Deployment / Connectivity. This is not a contribution Netty @ Apple Massive Scale Deployment / Connectivity Norman Maurer Senior Software Engineer @ Apple Core Developer of Netty Formerly worked @ Red Hat as Netty Project Lead (internal Red Hat) Author of

More information

CSCD 330 Network Programming

CSCD 330 Network Programming CSCD 330 Network Programming Lecture 8 Client-Server Programming Threads Spring 2017 Reading: Chapter 2, Relevant Links - Threads Some Material in these slides from J.F Kurose and K.W. Ross All material

More information

PART1: Choose the correct answer and write it on the answer sheet:

PART1: Choose the correct answer and write it on the answer sheet: PART1: Choose the correct answer and write it on the answer sheet: (15 marks 20 minutes) 1. Which of the following is included in Java SDK? a. Java interpreter c. Java disassembler b. Java debugger d.

More information

Scaling Without Sharding. Baron Schwartz Percona Inc Surge 2010

Scaling Without Sharding. Baron Schwartz Percona Inc Surge 2010 Scaling Without Sharding Baron Schwartz Percona Inc Surge 2010 Web Scale!!!! http://www.xtranormal.com/watch/6995033/ A Sharding Thought Experiment 64 shards per proxy [1] 1 TB of data storage per node

More information

Beyond Block I/O: Rethinking

Beyond Block I/O: Rethinking Beyond Block I/O: Rethinking Traditional Storage Primitives Xiangyong Ouyang *, David Nellans, Robert Wipfel, David idflynn, D. K. Panda * * The Ohio State University Fusion io Agenda Introduction and

More information

Big and Fast. Anti-Caching in OLTP Systems. Justin DeBrabant

Big and Fast. Anti-Caching in OLTP Systems. Justin DeBrabant Big and Fast Anti-Caching in OLTP Systems Justin DeBrabant Online Transaction Processing transaction-oriented small footprint write-intensive 2 A bit of history 3 OLTP Through the Years relational model

More information

Storage. Hwansoo Han

Storage. Hwansoo Han Storage Hwansoo Han I/O Devices I/O devices can be characterized by Behavior: input, out, storage Partner: human or machine Data rate: bytes/sec, transfers/sec I/O bus connections 2 I/O System Characteristics

More information

The Google File System

The Google File System The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung December 2003 ACM symposium on Operating systems principles Publisher: ACM Nov. 26, 2008 OUTLINE INTRODUCTION DESIGN OVERVIEW

More information

"protocol stack! chat. Java

protocol stack! chat. Java "protocol stack! chat # # $ "! $ http://www.ietf.org/rfc.html http://www.skype.com$ Internet for dummies "' &! ("IP Address! %%() "port! * +%#%%() * * % * (I/O "streams! InputStreamReader in = new InputStreamReader(System.in);

More information

Caches. Hiding Memory Access Times

Caches. Hiding Memory Access Times Caches Hiding Memory Access Times PC Instruction Memory 4 M U X Registers Sign Ext M U X Sh L 2 Data Memory M U X C O N T R O L ALU CTL INSTRUCTION FETCH INSTR DECODE REG FETCH EXECUTE/ ADDRESS CALC MEMORY

More information

CS 261 Fall Caching. Mike Lam, Professor. (get it??)

CS 261 Fall Caching. Mike Lam, Professor. (get it??) CS 261 Fall 2017 Mike Lam, Professor Caching (get it??) Topics Caching Cache policies and implementations Performance impact General strategies Caching A cache is a small, fast memory that acts as a buffer

More information