Sign In

Brantley Coile

Founder/CEO at Coraid

Brantley Coile is a serial entrepreneur and inventor in the field of computer networking and storage technology. He is the founder of SouthSuite, Inc., a software-only storage company established in 2014 and based in Athens, Georgia.12

Coile's career highlights include:

  1. Founding Coraid in 2000, where he developed the ATA-over-Ethernet (AoE) storage protocol and served as CTO until 2013.1

  2. Inventing Network Address Translation (NAT) and creating the PIX Firewall, which was acquired by Cisco Systems in 1995.4

  3. Co-founding Network Translation Inc. in 1994, where he developed the PIX Firewall.1

  4. Working at Bell Labs and Adaptive, where he contributed to Unix and TCP/IP implementations.1

After Coraid's disbandment in 2015, Coile founded SouthSuite, Inc. to continue developing AoE technology. The company's core- aid brand SR704 is a software storage appliance compatible with previous Coraid systems.3

Coile is known for his hands-on approach, spending about 80% of his time programming. He operates SouthSuite from the historic Southern Mutual Building in Athens, overlooking the University of Georgia campus.3

Highlights

Apr 19 · linkedin

There are only two reasons to use separate threads in a design.

As I track down bugs in our VMware ESX 7/8 driver (the Native kernel version), I had to review our design, and I wished I had been a bit more involved. There were too many threads, and it seemed clear that there was confusion about why to use them.

Most of the work was done by really good programmers. But there's a very common misunderstanding about when and how to use separate processes or threads.

The first reason is to have a context to the state of the program. By "state," I mean the collection of variables that are needed to do the program's job. First, let's see how one can do the same work without a thread.

Anything can be done with a single thread. The Oberon System by Niklaus Wirth of Pascal fame, was an entire desktop system that ran only a single thread. He also had file and email servers with only a single thread. It was certainly easy to understand in one sense, but required a bit more work in another.

A single threaded implementation is easier because it doesn't have to worry about another thread messing about with any of the data shared between threads. There are no locks required. You're the only thread so you just change the values of the data.

But the cost is having to explicitly save all the variables from one task to the next somewhere. You have to do a bit of the job, as much as you can with the data you currently have, and then save your state and return all the way back to the top of the single thread.

On the other hand, each thread in a threaded implementation has a stack of variables local to each active function, which keeps the "state" of the work. This eliminates the need to save state explicitly. You block and just switch the stack pointer and program counter, and you've saved and reloaded the state.

This is how the Research UNIX kernels worked. The kernel function swtch() did the magic. Ken Thompson also used the technique for a UNIX based PDP-11 phone switch used internally in Center 127 at Bell Labs. There was a process running for each button on the desk set. Ken added overlays to UNIX so as to bring in the code for each phase of the phone call. Because of shared text segments, this worked very well for a large number of lines.

The other reason? To fully use a multiple core processor.

A single threaded solution only uses the resources of a single processor. This is okay if you have a large number of instances of a program. But if you are trying to do something fast in the kernel, a driver for example, a single thread will only run the speed of a single processor.

How many threads? For the second reason, as few as well keep all the cores busy. This cuts down lock contention.

Much more could be said.

Sep 2 · linkedin

Have you ever used the UNIX program grep?

Ever wonder where it come from or why it has such a strange name?

In the beginning, UNIX ran on a PDP-7 and was written all in assembly language. There were only a handful of tools: ls, mv, rm, mkdir, chdir(sic), as (the assembler) and ed the text editor.

Even though things were very simple, the text editor ed had a full implementation of regular expression pattern matching. Ken Thompson based it off his work at Berkeley years before on a text editor called QED.

In this early UNIX environment, to search for a pattern in a file, you opened the file in ed and then did a "g/search-string/p" command, where "search-string" was a regular expression.

One day Ken got tired of having to get into ed for every stinking file he needed to search and decided to do something about it. He copied ed.s (remember, all assembler) to s.s and started cutting. If a line of s.s didn't do regular expressions, it was out. The result was that his command "s" did searches with regular expression on one or more files.

Not wanting to be "that guy" who pushes all his bad ideas out to the world (I'm not sure I know of anyone who thought he ever had a bad idea) he kept the new command in his private bin directory /usr/ken/bin.

One day Dough McIlroy, who many think was the smartest of the early UNIX folks and least recognized, asked if Ken "...could write something that did regular expression searches without having to get into the editor."

"Let me think about it," Ken answered.

That night, Ken issued the command "mv /usr/ken/bin/s /usr/bin/grep."

The next morning, Ken showed the new command to Doug and asked, "Is this the kind of thing you were thinking of?"

"Perfect!" Doug replied, impressed with how fast Ken could cook something like this up.

Why "grep?" Ken couldn't use the command "s" for a public utility. It's too short. We use one letter commands all over the place but only locally. I have "m" and "r" script files everywhere, the former runs "make" and the latter is a test script.

So g/RE/p leads one naturally to grep. It was just on the spur of the moment decision. That's the story of how we got grep and how it got its name.

Oh, and Ken told Doug about why the development cycle was so fast.

Related Questions

What inspired Brantley Coile to start SouthSuite, Inc?
How did Brantley Coile's experience at Coraid influence his work at SouthSuite, Inc?
What are the main products or services offered by SouthSuite, Inc?
How has Brantley Coile's career evolved over the years?
What challenges did Brantley Coile face when founding SouthSuite, Inc?
Brantley Coile
Brantley Coile, photo 1
Brantley Coile, photo 2
Add to my network

Location

Athens, Georgia, United States