Is Computer Science a science?
Time to time this question comes to my mind, and (almost automatically) I remember a statement by one of the most interesting persons that I have met in Chicago while we were enjoying some beers with our advisor:
"Real sciences do not need to have the word science in their names. For example, Physics, Biology and Chemistry."
I should start this post by saying that I disagree with such statement. :-)
Let us take a look at what is the definition of the word science According to the Merrian-Webster Online (http://www.m-w.com). Thus, we have:
1: the state of knowing : knowledge as distinguished from ignorance or misunderstanding
2 a : a department of systematized knowledge as an object of study (the science of theology) b : something (as a sport or technique) that may be studied or learned like systematized knowledge (have it down to a science)
3 a : knowledge or a system of knowledge covering general truths or the operation of general laws especially as obtained and tested through scientific method b : such knowledge or such a system of knowledge concerned with the physical world and its phenomena : NATURAL SCIENCE
4 : a system or method reconciling practical ends with scientific laws (culinary science)
To avoid being biased and a situation where one could tell me that I do not know the color of the sky. I will cite a second source. No, the second source is not Britanica, it is Wikipedia (http://en.wikipedia.org/wiki/Science).
[...]
refers to the system of acquiring knowledge based on empiricism, experimentation, and methodological naturalism.
[...]
Therefore, I think that Computer Science fits very well on both definitions and it should be considered a real science. Perhaps a good next question is: what is a good scientific method in computer science and what is not?
However, this is a discussion for a second round of beers. :-)
Cheers,
Eli
Friday, May 26, 2006
Friday, May 19, 2006
The Spam World Map
I have found an interesting tool based on the Google Maps API and Host IP Info API. The tool basically translates domain names to a geographic location by showing on the map. The idea is pretty simple. But it is nice. :-)
Here is the link: http://map.butterfat.net/emailroutemap/
It was a very interesting finding because some days ago I was poetically thinking about exploiting geographical location and network information/usage patterns for some particular cases that I am investigating now. One of the results that I am particularly aware are related to a time zone aware scheduling approach.
Cheers,
Eli
I have found an interesting tool based on the Google Maps API and Host IP Info API. The tool basically translates domain names to a geographic location by showing on the map. The idea is pretty simple. But it is nice. :-)
Here is the link: http://map.butterfat.net/emailroutemap/
It was a very interesting finding because some days ago I was poetically thinking about exploiting geographical location and network information/usage patterns for some particular cases that I am investigating now. One of the results that I am particularly aware are related to a time zone aware scheduling approach.
Cheers,
Eli
Wednesday, April 12, 2006
IP Design Principles
Recently, I have found a very interesting article that revisited a discussion on the IP packet switching foundations versus circuit switching.
I particularly liked the article structure and agree with some points exposed by the authors. Mainly, the question whether there is an approach to guarantee non-trivial QoS levels over IP other than overprovisioning the links.
Yet, the most important aspect in the article is the attempt to uncurtain new perspectives for packet switching and circuit switching as well.
The paper is short, contains good references and it is definitely worth reading.
Is IP going to take over the world (of communications)?
Regards,
Eli
Recently, I have found a very interesting article that revisited a discussion on the IP packet switching foundations versus circuit switching.
I particularly liked the article structure and agree with some points exposed by the authors. Mainly, the question whether there is an approach to guarantee non-trivial QoS levels over IP other than overprovisioning the links.
Yet, the most important aspect in the article is the attempt to uncurtain new perspectives for packet switching and circuit switching as well.
The paper is short, contains good references and it is definitely worth reading.
Is IP going to take over the world (of communications)?
Regards,
Eli
Thursday, March 23, 2006
Storage Affinity Simulator
Due to several e-mails that I received asking for the simulator that I used to evaluate the Storage Affinity scheduling heuristic, I decided to put the source code available for download here.
Please read the WARNING file inside.
StorageAffinity_Sim.tar.bz2
Enjoy,
./Eli
Due to several e-mails that I received asking for the simulator that I used to evaluate the Storage Affinity scheduling heuristic, I decided to put the source code available for download here.
Please read the WARNING file inside.
StorageAffinity_Sim.tar.bz2
Enjoy,
./Eli
Friday, March 17, 2006
Xen and The Art of Hyper-Threading
The quarter is technically over. Here, I decided to post an abstract of some findinds in one of the projects where I had a lot of fun during almost all this time that I have not posted here. :-)
The Performance Impact of Information Gap between Virtual and Physical CPU Capabilities
Theo Hebert, Elizeu Santos-Neto, Andy Seidel
Virtualization is a technique used to create software abstractions of physical hardware architectures to enable more flexible resource utilization and more efficient application execution. Recently, virtualization technologies have regained popularity and created a whole new set of opportunities, that span from software development environments to planetary scale service deployment. However, during the virtualization process, information about architectural components can be lost. This information gap regarding the physical and virtual hardware capabilities may cause performance penalties in the applications executing on top of virtual hardware. In this work we show that the such lack of accuracy exists in the virtual CPU provide by the Xen virtual machine monitor. We focused our investigations on the Hyper-Threading enabled processors. We also describe our solution to alleviates the performance penalty and a discussion about the performance impact of the information gap.
The quarter is technically over. Here, I decided to post an abstract of some findinds in one of the projects where I had a lot of fun during almost all this time that I have not posted here. :-)
The Performance Impact of Information Gap between Virtual and Physical CPU Capabilities
Theo Hebert, Elizeu Santos-Neto, Andy Seidel
Virtualization is a technique used to create software abstractions of physical hardware architectures to enable more flexible resource utilization and more efficient application execution. Recently, virtualization technologies have regained popularity and created a whole new set of opportunities, that span from software development environments to planetary scale service deployment. However, during the virtualization process, information about architectural components can be lost. This information gap regarding the physical and virtual hardware capabilities may cause performance penalties in the applications executing on top of virtual hardware. In this work we show that the such lack of accuracy exists in the virtual CPU provide by the Xen virtual machine monitor. We focused our investigations on the Hyper-Threading enabled processors. We also describe our solution to alleviates the performance penalty and a discussion about the performance impact of the information gap.
Thursday, January 26, 2006
CPU Inheritance Scheduling
Recently, I remembered a topic that I dedicated a lot of my attention in the end of my undergrad course: CPU Inheritance Scheduling.
The main motivation for Inheritance (Hierarchical or Loadable, if you prefer) Scheduling is the assumption that it is hard to a particular scheduling policy to fulfill the requirements posed by several different target applications.
Therefore, the idea is to allow general purpose systems to easily implement multiple scheduling policies. Furthermore, to have the schedulers organized in a given hierarchy, in the sense that it is possible to reuse the whole scheduling policy logic.
As an example of different application requirements in the same system, we can think of interactive applications have a natural demand for responsiveness (e.g. a text editor, image editing), while batch applications for throughput (e.g. compiling a kernel, running simulations).
Back to the late 90's, the first reference that I have found about it, and that captivated me, was a paper written by Bryan Ford and Sai Susarla (CPU Inheritance Scheduling). In this article, the authors describe the design and implementation of a thread scheduling framework that supports multi-policy scheduling in the FreeBSD system.
Later, an approach that provides yet more flexibility is presented by George Candea Michael B. Jones (Vassal: Loadable Scheduler Support for Multi-Policy Scheduling). In this case, they provide the ability of dynamic loading of scheduling policies. In contrast with the Bryan Ford's paper, the Vassal strategy is better from the point of view that it is not necessary to rely on the scheduling policies made available by the operating system. One could request for loading her own scheduling policy instead. Obviously, this would require the necessary privileges, what turns out in a limited flexibility.
Thus, how about in a system based on virtual machines, where possible harmful user activities will not influence other users? Well, I would primarily think that it might be interesting in a certain degree, however it remains an open question to me.
Maybe, future posts soon. If I have some course projects break. :-)
Recently, I remembered a topic that I dedicated a lot of my attention in the end of my undergrad course: CPU Inheritance Scheduling.
The main motivation for Inheritance (Hierarchical or Loadable, if you prefer) Scheduling is the assumption that it is hard to a particular scheduling policy to fulfill the requirements posed by several different target applications.
Therefore, the idea is to allow general purpose systems to easily implement multiple scheduling policies. Furthermore, to have the schedulers organized in a given hierarchy, in the sense that it is possible to reuse the whole scheduling policy logic.
As an example of different application requirements in the same system, we can think of interactive applications have a natural demand for responsiveness (e.g. a text editor, image editing), while batch applications for throughput (e.g. compiling a kernel, running simulations).
Back to the late 90's, the first reference that I have found about it, and that captivated me, was a paper written by Bryan Ford and Sai Susarla (CPU Inheritance Scheduling). In this article, the authors describe the design and implementation of a thread scheduling framework that supports multi-policy scheduling in the FreeBSD system.
Later, an approach that provides yet more flexibility is presented by George Candea Michael B. Jones (Vassal: Loadable Scheduler Support for Multi-Policy Scheduling). In this case, they provide the ability of dynamic loading of scheduling policies. In contrast with the Bryan Ford's paper, the Vassal strategy is better from the point of view that it is not necessary to rely on the scheduling policies made available by the operating system. One could request for loading her own scheduling policy instead. Obviously, this would require the necessary privileges, what turns out in a limited flexibility.
Thus, how about in a system based on virtual machines, where possible harmful user activities will not influence other users? Well, I would primarily think that it might be interesting in a certain degree, however it remains an open question to me.
Maybe, future posts soon. If I have some course projects break. :-)
Tuesday, January 03, 2006
In the last Computer Architecture class, it was mentioned that it is easier to find information about the evolution of processors (e.g. number of transistors, performance, etc) than finding the equivalent information about disk and/or memory. This is very interesting because I was wondering about something similar approximately a month ago.
The question in my head was: "Why does not exist a TOP500 ranking of the High Performance Storage infrastructures?".
They have published the www.top500.org highlighting the processing power for years, but few details are included about the storage systems which come together these powerful machines.
Recently, I have found that the IEEE Computer Society Mass Storage Systems Technical Committee is sponsoring an initiative to develop the TOP100io (http://top100io.org/) which is still in the "Call for Contributors" phase.
Particularly, considering that several distributed computational architectures are built today to tackle huge data intensive problems, this ranking might be relevant in guiding future research on high performance storage systems design and performance analysis.
The question in my head was: "Why does not exist a TOP500 ranking of the High Performance Storage infrastructures?".
They have published the www.top500.org highlighting the processing power for years, but few details are included about the storage systems which come together these powerful machines.
Recently, I have found that the IEEE Computer Society Mass Storage Systems Technical Committee is sponsoring an initiative to develop the TOP100io (http://top100io.org/) which is still in the "Call for Contributors" phase.
Particularly, considering that several distributed computational architectures are built today to tackle huge data intensive problems, this ranking might be relevant in guiding future research on high performance storage systems design and performance analysis.
Monday, January 02, 2006
Subscribe to:
Posts (Atom)
