Victor Rodriguez

Victor holds a Master Degree in Computer Science from the Monterrey Institute of Technology and Higher Education (ITESM). Victor is a Linux developer since 2011. He began his career in the Linux kernel community as maintainer of the board OMAP138 “Hawk board” platform. At Intel, he is part of the Open Source Technology Center as OS developer. He has been part of the Clear Linux* Project for Intel® Architecture in areas such as performance optimizations, security, debug, compilers/toolchains and tools development. Victor has had the chance to be in HPC and binary translation teams at Intel too. In his free time he is professor of the ITESM where he teach the Operating System lecture. Victor loves to run marathons, collaborate in embedded projects ( Yocto developer ) and read all kind of literature.

Publications


Every year, the Linux* community awaits the release of a new version of the GNU* Compiler Collection. The collection includes front ends for C , C++ , Objective-C, Fortran , Ada, and Go, as well as libraries for these languages. The GCC community works hard to provide usability improvements, bug fixes, new security features, and performance improvements.

In the past year, impressive technologies for the data center market were launched; however, many developers do not take advantage of these advances immediately. CPU architectures gain interesting new instructions, but developers choose backward compatibility instead of leveraging innovative architectures. For example, a recent hardware evolution incorporated powerful vectorization instructions, yet many Linux* distributions do not use these instructions in their code. Developers are faced with the challenge of improving operations while supporting existing installations.

CPU architectures often gain interesting new instructions as they evolve, but application developers often find it difficult to take advantage of those instructions. Reluctance to lose backward-compatibility is one of the main roadblocks slowing developers from using advancements in newer computing architectures. Function multi-versioning (FMV), which first appeared in GCC 4.8, is a way to have multiple implementations of a function, each using a different architecture's specialized instruction-set extensions. GCC 6 introduces changes to FMV that make it even easier to bring architecture-based optimizations to application code.

For the longest time, compilers have been producing optimized binaries. However, in today's world it can often be daunting to know exactly which optimizations you should choose (more than 80 options with just the basic optimizations), and which of those will really be of benefit to you. In this tutorial, we will examine a simple "hello world" case, and introduce you to some basic optimizations, as well as the new AutoFDO feature of GCC version 5.0.

Power consumption is a troublesome design constraint for HPC systems. If current trends continue, future petaflop systems will require 100 megawatts of power to maintain high-performance. To address this problem the power and energy characteristics of high performance systems must be characterised. The main idea of this project is to design a methodology for the optimal selection (minimal number of systems that maximise performance and minimise energy consumption) of a network topology for high performance applications using ultra-low-voltage microprocessors platforms (Intel® AtomTM Processor E3825 - Minnowboard).

Testing is both technically and economically an important part of high quality software production. It has been estimated that testing accounts for half of the expenses in software production. Much of the testing is done manually or using other labor-intensive methods. It is thus vital for the software industry to develop efficient, cost effective, and automatic means and tools for software testing. Researchers have proposed several methods over years to generate automatically solution which have different drawbacks. This study examines automatic software testing optimization by using genetic algorithm approaches.

A small part of the server's available memory is used by the operating system and its applications. The largest chunk of memory is reserved for all the applications and their users. It is not uncommon for applications to require tens of megabytes of memory for each user connection. And finally, some memory is needed for database storage. Knowing how much memory is being consumed and what processes are consuming it becomes crucial for today's data centers' operating systems.

GCC 7* was released last May 2nd and the Clear Linux* Project for Intel® Architecture already uses it as the default C compiler. This latest GCC* compiler version came with new features and performance optimizations including various improvements in the diagnostics, location ranges, suggestions for misspellings, and even hints for code fixes. The following examples showcase some cool features included in GCC 7.

The Internet has changed the world in a way that history has never seen before. Every year new programming languages, tools, and platforms revolutionize what the Internet is capable of. One of the technologies behind this revolution is the hypertext preprocessor, or PHP. PHP is one of the most common programming languages used for website and web application development. PHP is a general purpose, server-side scripting language that was designed to make dynamic pages and applications [1]. The latest numbers show that PHP is used by 82.4% of all websites [2]. Because of this, any performance changes in PHP are extremely important to the industry.

Every day the world generates around 2.5 quintillion bytes of data (1 billion gigabytes). Actually, 90% of the world's data today was created in the last 2 years [1]. That huge amount of data needs to be processed and analyzed as quickly as possible so it can provide meaningful information to improve our daily lives.

The early days of UNIX development saw a tool-interpreted programming language designed for text processing; it was AWK. The basic function of AWK is to search files for lines (or other units of text) that contain certain patterns. When a line matches one of the patterns, AWK performs specified actions on that line. AWK continues to process input lines in this way until it reaches the end of the input files.

In the Clear Linux* Project, we want our users to easily access these new technologies to improve applications for customers by boosting their performance and providing a more robust layer of security protection against attacks. Included in GCC 10.1 is a new static analysis system that detects potential security vulnerabilities. This helps to speed up the development cycle as well as reduce debug time. In this blog post, I review some of the latest features of GCC release 10.1 already present in Clear Linux, explain some of their pros and cons, and show how to use them. I presented parts of this material as Toolchains in the New Era at the Embedded Linux* Conference 2020.



Master Thesis

The use of IoT devices is rising quickly, by 2022 it is expected to have 14 billions of IoT devices; which will create a rise on processed, transmitted and stored data. They would create so much Internet traffic that it would be compared to a security attack. Besides the problems of transmitted data, power consumption of systems that store and process data generated by IoT devices is important to be studied. If current trends continue, it is estimated that a system that would handle IoT data would require 100 megawatts. This research work studies a cluster of embedded boards, which form an IoT platform, to explore reduction of transmitted data to high performance servers needed for remote data processing. It also compares power efficiency of the embedded cluster to a desktop (or traditional) computing system. MPI benchmarks are utilized to quantify power consumption and performance. Results are compared among multiple operating systems to select the most power efficient. This work provides a way to determine whether applications can take advantage of the communication between IoT devices to process their own data instead of sending information to data centers. As a result of the experiments is proved that in some cases, the power efficiency of a cluster of embedded systems is higher than a desktop (or traditional) computing system.


Git Repository

https://github.com/VictorRodriguez


Tools he maintains


The main purpose of a computer system is to execute programs. These programs, together with the data they access, must be at least partially in main memory during execution. As a developer and user are necessary to know the amount of memory consumed by every process in execution. PSSTOP helps to get this information in an accurate way.

Message Passing Interface (MPI) implementation



Presentations


The include-project is an open source collaboration community that provides templates, tools and methods to promote the creation and contribution to upstream Open Source based projects.

The open source model has transformed software development by providing faster demand-side learning, higher quality, better security, shorter development cycles, and lower prices than closed platform development models. The main activities of include project will be:


  • Create a sand box for the academy and hobbyists to play with real upstream projects, these projects are mentored by technical leads willing to help and coach interested people

  • Contribute to improve the upstream projects when possible. Contributions will always respect authorship, trying to increase the number of technical leads on upstream

  • Give free consultancy to start ups in order to help them to adopt open source technologies to maximize their potential (they might be interested on the help from the top contributors of include project)

The include project fosters innovation by hosting collaboration events among the Open Source technical community, application developers, industry and end users to solve pressing issues faced by our social ecosystem